0

具有 4 列 col1、col2、col3、col4 的数据表 DT。

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 写入文件,它会给出错误的输出。关于如何实现它的任何指示?

4

2 回答 2

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());
于 2013-07-10T04:12:54.813 回答
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();
于 2013-07-10T03:58:00.470 回答