Использование String.Format для динамического предоставления максимального количества необходимого заполнения

Здравствуйте, я пытаюсь сделать назначение консольного приложения более эстетичным, и, сделав это, я решил внедрить String.Format в свои циклы. Нас не учили этому, но это довольно легко подобрать. Основная проблема здесь заключается в том, как мне разобрать int в String.Format, чтобы он предоставил максимальное необходимое пространство.

Это петля:

for (int index = 0; index < files.Length; index++)
{
    int maxNumericalSize = 2;
    int fileNumberSystem = index + 1;
    string result = string.Format("{0,maxNumericalSize}: {1,20} - {2,10} - {3}", fileNumberSystem, files[index].Name, files[index].Length, files[index].LastWriteTime );
    /* Console.WriteLine(fileNumberSystem + ". " + files[index].Name + " - " + files[index].Length + " - " + files[index].LastWriteTime); */
    Console.WriteLine(result);
}

Как вы можете видеть, MaxNumericalSize, очевидно, выделяет область, поскольку она находится в речевых метках, поэтому в настоящее время мне интересно, как я могу разобрать это в String.Format без ошибки.


person connormcwood    schedule 08.01.2015    source источник
comment
Вы можете преобразовать int в string и дополнить это, если это вопрос. Было бы намного лучше, если бы вы показали текущий вывод и ожидали, что кто-то поймет, чего вы хотите (извините, но я не понимаю).   -  person Sinatr    schedule 08.01.2015
comment
string result = string.Format({0,+maxNumericalSize+}: {1,20} - {2,10} - {3}, fileNumberSystem, files[index].Name, files[index].Length, files[index] .LastWriteTime ); должно сработать   -  person Salvatore Sorbello    schedule 08.01.2015


Ответы (1)


Попробуйте использовать string.PadLeft/string.PadRight, чтобы добавить дополнительные пробелы следующим образом.

string.Format("{0}: {1,20} ..", fileNumberSystem.ToString().PadRight(maxNumericalSize), ...);

Для PadRight это работает так

Возвращает новую строку, которая выравнивает символы в этой строке по левому краю, дополняя их пробелами справа, для указанной общей длины.

Есть даже перегрузка, которая позволяет вам выбрать символ, чтобы заполнить пространство. Дополнительную информацию можно найти в MSDN.

person Ondrej Janacek    schedule 08.01.2015