Форматирование строк для целых чисел c # - PullRequest
4 голосов
/ 05 октября 2011

У меня есть класс, который содержит две строки, одну, которая отражает текущий год, и одну, которая представляет некоторое значение. Эти поля объединяются на основе формата (использует string.format), указанного пользователем. ВАЖНО: пользователь вводил данные, которые раньше создавались, поэтому они всегда были целыми числами, и нам не пришлось об этом беспокоиться.

Наш формат по умолчанию: "{0} - {1: 000}". Однако теперь, когда указанные пользователем данные являются строкой, они не хотят соответствующим образом форматировать. Вот пример:

Пользователь вводит 12 по мере необходимости. При форматировании вместо отображения 2011-0012 отображается только 2011-12. Как я могу убедиться, что 0 добавляются без каких-либо сумасшедших циклов, которые будут добавлять 0 или пытаться разобрать число (при условии, что это число. Должно быть достаточно только 0, чтобы равняться строке длины 4)?

Вот что я пробовал в формате:

"{0} - {1: 0000}" -> исходный формат, когда пользователь был вынужден вводить числа. "{0} - {1: D4}" "{0} - {1: N4}"

Ответы [ 2 ]

5 голосов
/ 05 октября 2011

Вы можете использовать string.PadLeft():

string output = string.Format("{0}-{1}", "2011", input.PadLeft(4, '0'));
2 голосов
/ 05 октября 2011

Вы можете использовать string.PadLeft для добавления нулей слева или int.TryParse для преобразования в целое число. Последний будет удваиваться как ваша проверка.

...