簡體   English   中英

使用C#進行字符串格式化的問題

[英]Issue in string formatting with c#

具有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寫入文件,則會產生錯誤的輸出。 關於如何達到目標的任何指示?

嗯..您給的格式將產生:

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();

不確定我是否了解您的要求,但這可能是您所需要的

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());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM