使用c#进行字符串格式化问题

时间:2013-07-10 03:52:45

标签: c# string format

数据表DT,包含4列col1,col2,col3,col4。

str = String.Format("{0,-30}{0,-30}{0,-30}{0,-30}", "Col1", "Col2", "Col3", "Col4");

如果我们将str写入文件,它将生成输出

Col1                         Col2                         Col3                         Col4 

我需要以编程方式执行此操作

string str = "";
Boolean fst = true;
string q = Convert.ToString('"');
string frmt = "";
foreach (DataColumn co in DT.Columns)
{

    if (fst)
    {
        colname = colname + q + co.ColumnName + q;
        fst = false;
    }
    else
    {
        colname = colname + "," + q + co.ColumnName + q;
    }

    frmt = frmt + "{0,-30}";
}
str = String.Format(frmt, colname);

此处frmt="{0,-30}{0,-30}{0,-30}{0,-30}";的值 价值colname="Col1", "Col2", "Col3", "Col4";

但是,如果我写str文件,它会输出错误。关于如何实现它的任何指示?

2 个答案:

答案 0 :(得分:0)

嗯......你给出的格式会产生:

Col1          Col1         Col1          Col1

此外,String.Format()方法需要一个对象数组作为参数。你传递的是一个单独的字符串,用逗号分隔单词。

为什么不做以下事情:

StringBuilder sb = new StringBuilder()

foreach (DataColumn co in DT.Columns)
   sb.Append(String.Format("{0,-30}", co.ColumnName));

return sb.ToString();

答案 1 :(得分:0)

不确定我理解你的要求,但这可能是你需要的

string frmt = "";
int columnCount = 0;
var values = new List<string>();
foreach (DataColumn co in DT.Columns)
{
    values.Add(co.ColumnName);
    frmt += string.Format("{0}{2}, -30{1}", "{", "}", columnCount);
    columnCount++;
}
string str = string.Format(frmt, values.ToArray());