C #: Как отформатировать строку, используя string.Format, не зная размера массива? - PullRequest
0 голосов
/ 14 января 2012

У меня есть массив в цикле.

В то время, массив может иметь другой размер (может быть 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 ]

4 голосов
/ 14 января 2012

Как правило, не используйте 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 голос
/ 29 января 2014

Несмотря на то, что это старый вопрос, я подумал, что отвечу для всех, кто пришел сюда из Google.

Мой подход заключается в том, чтобы использовать цикл 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));

Надеюсь, это кому-то еще полезно.

...