Форматирование строк C # с выравниванием по переменному пробелу

#c# #text-alignment #string-interpolation

#c# #форматирование строки

Вопрос:

Я хочу сделать что-то вроде

 String.Format("Completed {0:9} of ",0)   xlsx.totalCount.ToString();
  

за исключением того, что вместо жесткого кодирования 9 я хочу, чтобы выравнивание было таким, каким является xlsx.totalCount. Есть мысли?

Комментарии:

1. Я думаю либо string.PadLeft , либо new string(c, count)

Ответ №1:

Попробуйте это так:

 string formatString = "{0:"   xlsx.totalCount.ToString()   "}";
String.Format("Completed "   formatString   " of ", 0)   xlsx.totalCount.ToString();
  

Ответ №2:

Строка не обязательно должна быть константой времени компиляции, вы можете создать строку во время выполнения (используя StringBuilder, operator или даже вложенную строку.Форматирование). Это, например, приведет к созданию необходимой строки с xlsx.totalCount, заменяющей «9»:

 String.Format("Completed {0:"   xlsx.totalCount   "} of "...
  

Ответ №3:

Я предположил, что он хотел количество в 9 секунд в зависимости от значения xlsx.totalCount .

 StringBuilder sb = новый StringBuilder(); 
 sb.Append('9', xlsx.totalCount );
 Строка.Форматирование( "Завершено {0:"   sb.toString()   "} of ",0)   xlsx.totalCount.toString();

Опять же, кажется, что должен быть более простой способ построения цепочки из 9 элементов, но, по-видимому, не за 3 минуты размышлений.