C#:如何在不知道数组大小的情况下使用string.Format格式化字符串?

时间:2012-01-14 10:09:18

标签: c# string stringbuilder

我在一个循环中有一个数组。

一次,数组可能有不同的大小(可能是1,2,3,4,5,6,7,8等元素)

如何在不指定数组的确切大小的情况下使用string.Format

包含6名成员的列表的代码。

StringBuilder stringBuilder = new StringBuilder();
                              line = stringBuilder.AppendLine(string.Format("{0, -40} 
                              {1, -40} {2, -25} {3, -15} {4, -15} {5, -15} ",
                              listString[0], listString[1], listString[2],
                              listString[3], listString[4], listString[5]))
                              .ToString();

Console.WriteLine(line)

我需要一段代码来格式化我的字符串,而不需要在特定数量的元素的情况下编写特定的代码。我不知道的任何功能? :)

2 个答案:

答案 0 :(得分:4)

基本上,不要在这里使用string.Format - 而是使用适当的格式说明符,使用每个元素的Append循环遍历数组。

for(int i=0;i<arr.Length;i++) {
    if(i!=0) builder.Append(' ');
    // need to apply format per i, it seems        builder.Append(arr[i].ToString(formatSpecifier));
}
builder.AppendLine();

答案 1 :(得分:1)

尽管这是一个老问题,但我想我会回答那些从谷歌来到这里的人。

我的方法是使用foreach循环和StringBuilder,然后将每个元素追加到字符串的末尾。 一旦字符串'构建',只需在String.Format

中打印字符串
StringBuilder sb = new StringBuilder();
foreach(int number in listString)
{
    sb.Append(number).Append("\n");    //or whatever separator you would like
}
string sbResult = sb.ToString();

Console.WriteLine(String.Format("Write your content here {0}", sbResult));

希望这对某人有用。