Как отформатировать число в строку с ведущими нулями?

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

Key = i.ToString();

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

9 ответов


довольно проста:

Key = i.ToString("D2");

D означает "десятичное число",2 для количества цифр для печати.


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

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

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

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

Key = i.ToString("0000000000");

заменить на столько цифр, сколько вам нравится.

i = 123 затем приведет к Key = "0000000123".


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

Key = $"{i:D2}";

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

i.ToString("D10")

посмотреть типа int32.Метод toString (MSDN), и Стандартные Строки Числового Формата (MSDN).

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

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

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

посмотреть строку.PadLeft (MSDN).


Обычно Строки.Формат ("формат", объект) предпочтительнее объекта.ToString ("формат"). Следовательно,

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

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

Key = i.ToString("000000");

попробуй:

Key = i.ToString("000000");

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


здесь я хочу не ограничивать в 4-значный, как если 1 он должен показать как 0001,если это 11 она должна показать, как 0011..Ниже приведен код.

        reciptno=1;//Pass only integer.

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

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

я реализовал этот код для генерации денежного поступления no.


int num=1;
string number=num.ToString().PadLeft(5, '0')

Output= "00001"