在特定位置写入文本文件?

问题描述:

如何写一个文件中的特定位置,而不是像" "。在这里我写一个文件给予空间,我得到的输出是一样在特定位置写入文本文件?

TIMESTAMP    'ATRS_ACCT_TIMESTAMP', 
OU_ID    'ATRS_ACCT_OU_ID', 
COMPANY_CODE    'ATRS_ACCT_COMPANY_CODE', 
BU_ID    'ATRS_ACCT_BU_ID', 

,但我需要这样的

TIMESTAMP   'ATRS_ACCT_TIMESTAMP', 
OU_ID    'ATRS_ACCT_OU_ID', 
COMPANY_CODE  'ATRS_ACCT_COMPANY_CODE', 
BU_ID    'ATRS_ACCT_BU_ID', 
输出

这里是我的代码

string[] ss = new string[tblSchema.Rows.Count]; 
for (int i = 0; i < tblSchema.Rows.Count; i++) 
{ 
    ss[i] = (tblSchema.Rows[i]["ColumnName"].ToString()); 
    dest.WriteLine(ss[i].ToUpper() + "    " + 
        "'" + textBox2.Text + ss[i].ToUpper() + "'" + ","); 
} 

什么建议吗?

使用String.Format()并指定字段的字段长度。事情是这样的:

var line = String.Format("{0,-20} '{1}{0}',", ss[i].ToUpper(), textBox2.Text); 
// "{0,-20}" - Print the first item using a minimum of 20 characters left aligned 
dest.WriteLine(line); 

想要在写入字符串之前填充字符串。这将提供正确的空间数量。请参阅本教程:http://www.java2s.com/Code/CSharp/Language-Basics/Trimmingandpadding.htm

使用“\ t”替代“” - 它插入制表符而不是空格。

编辑: 我的不好,没有注意到你在迭代表名。 这很不好意思,但是您可以根据最大的表名和当前表名称使用不同数量的\ t ...

+0

这只会如果所有表中的工作名称在相同的选项卡边界内完成。 – forsvarir 2011-05-12 10:52:00

+0

我没有注意到他使用循环的列名称,否则我会建议使用尽可能多的\ t根据需要... 这是丑陋的,但你可以使用\ t根据最大的表名相对到当前表名。 – Gal 2011-05-12 10:55:26

也许这有助于对理解:

string txt = "Hello World"; 
    string txt2 = "Test"; 
    string txt3 = "Let's go"; 

    string line = String.Format("{0,-15} {1,-10} {2,10}", txt, txt2, txt3); 

    Console.WriteLine(line); 
    Console.ReadLine(); 

说明:

这将对准位置0-15之间留有定位文本

{0,-15} =第一条带克[TXT],1 =文本,-15 =允许的字符串,字符的量 - =左对齐

这将定位文本位置16-26右之间对准:

{ 1,10} =第二串[TXT2],1 =文本,10 =允许的字符串的字符量,右对齐

这将使对准的位置27-37左侧之间的文本:

{2,-10} =第三串[txt3],2 =文本,-10 =允许的字符串,字符的量 - =左对齐