Как я могу отформатировать число в строку с ведущими нулями? - PullRequest
214 голосов
/ 24 марта 2011

У меня есть число, которое мне нужно преобразовать в строку. Сначала я использовал это:

Key = i.ToString();

Но я понимаю, что это сортируется в странном порядке, и поэтому мне нужно заполнить его нулями. Как я мог это сделать?

Ответы [ 10 ]

311 голосов
/ 24 марта 2011

Довольно просто:

Key = i.ToString("D2");

D обозначает «десятичное число», 2 обозначает количество печатаемых цифр.

180 голосов
/ 24 марта 2011

См. Форматирование строки в C # для некоторых примеров использования String.Format

Фактически лучший пример форматирования int

String.Format("{0:00000}", 15);          // "00015"

или используйте String Interpolation :

$"{15:00000}";                           // "00015"
64 голосов
/ 24 марта 2011

Если вы хотите сохранить фиксированную ширину, например, 10 цифр, сделайте это следующим образом

Key = i.ToString("0000000000");

Замените на столько цифр, сколько хотите.

i = 123результат в Key = "0000000123".

56 голосов
/ 11 апреля 2016

Поскольку никто еще не упомянул об этом, если вы используете C # версии 6 или выше (то есть Visual Studio 2015), то вы можете использовать интерполяция строк , чтобы упростить ваш код.Таким образом, вместо использования string.Format(...), вы можете просто сделать это:

Key = $"{i:D2}";
30 голосов
/ 24 марта 2011

использование:

i.ToString("D10")

См. Int32.ToString (MSDN) и Стандартные строки числового формата (MSDN).

Или используйте String.PadLeft. Например,

int i = 321;
Key = i.ToString().PadLeft(10, '0');

Результатом будет 0000000321. Хотя String.PadLeft не будет работать для отрицательных чисел.

См. String.PadLeft (MSDN).

15 голосов
/ 16 апреля 2013

Обычно String.Format («формат», объект) предпочтительнее, чем object.ToString («формат»). Следовательно,

String.Format("{0:00000}", 15);  

предпочтительнее,

Key = i.ToString("000000");
13 голосов
/ 24 марта 2011

Попробуйте:

Key = i.ToString("000000");

Лично я бы посмотрел, если вы не можете отсортировать по целому, а не по строковому представлению.

3 голосов
/ 21 июня 2017

Здесь я хочу, чтобы мое no ограничивалось четырьмя цифрами, например, если оно равно 1, оно должно отображаться как 0001, если оно 11, оно должно отображаться как 0011 .. Ниже приведен код.

        reciptno=1;//Pass only integer.

        string formatted = string.Format("{0:0000}", reciptno);

        TxtRecNo.Text = formatted;//Output=0001..

Я реализовалэтот код для генерации денежного чека №

1 голос
/ 04 апреля 2017
int num=1;
string number=num.ToString().PadLeft(4, '0')

Выход = "00001"

РЕДАКТИРОВАТЬ: Изменено, чтобы соответствовать сумме PadLeft

0 голосов
/ 18 июня 2019

Для интерполированных строк:

$"Int value: {someInt:D4} or {someInt:0000}. Float: {someFloat: 00.00}"
...