C # преобразовать int в строку с нулями?

В C # у меня есть целочисленное значение, которое нужно преобразовать в строку, но перед этим нужно добавить нули:

Например:

int i = 1;

Когда я конвертирую его в строку, он должен стать 0001

Мне нужно знать синтаксис C #.


person Pinu    schedule 01.12.2010    source источник
comment
Это может вам помочь - Как: дополнить число ведущими нулями . Удачи   -  person Koonwah    schedule 01.12.2010


Ответы (10)


i.ToString().PadLeft(4, '0') - нормально, но не работает с отрицательными числами
i.ToString("0000"); - явная форма
i.ToString("D4"); - описатель краткого формата формы
$"{i:0000}"; - интерполяция строк (C # 6.0+)

person Jay    schedule 01.12.2010
comment
i.ToString (). PadLeft (4, '0') НЕ работает для отрицательных чисел, например (-5) .PadLeft (4, '0') будет 00-5 - person Antonio Bakula; 21.05.2013
comment
как отобразить строку фиксированной длины. ?? - person Mark Macneil Bikeio; 12.11.2014
comment
@Rahul Прочтите это: msdn.microsoft. ru / en-us / library / - person Kevdog777; 04.02.2015
comment
этот способ работал у меня String.Format ({0: D4}, number); - person Arthur Melo; 13.06.2017
comment
Использование ярлыка формата String также работает, например. $ {i: D4}; - person JamesSugrue; 17.07.2017
comment
@AntonioBakula определяет работы Вот что я ожидал от него. - person KthProg; 15.01.2018
comment
Я ожидал -005, а не 00-5 - person Antonio Bakula; 16.01.2018

i.ToString("D4");

См. MSDN о спецификаторах формата.

person Ryan    schedule 01.12.2010
comment
этот способ работал у меня String.Format ({0: D4}, number); - person Arthur Melo; 13.06.2017

Вот хороший пример:

int number = 1;
//D4 = pad with 0000
string outputValue = String.Format("{0:D4}", number);
Console.WriteLine(outputValue);//Prints 0001
//OR
outputValue = number.ToString().PadLeft(4, '0');
Console.WriteLine(outputValue);//Prints 0001 as well
person Denys Wessels    schedule 01.09.2011

Вы можете использовать:

int x = 1;
x.ToString("0000");
person Yodan Tauber    schedule 01.12.2010
comment
И второй способ использовать ту же строку формата: string.Format("{0:0000}", x) - person Yodan Tauber; 01.12.2010

Интерполяция строк в стиле C # 6.0

int i = 1;
var str1 = $"{i:D4}";
var str2 = $"{i:0000}";
person Dr Blowhard    schedule 18.11.2016
comment
Этот выглядит очень красиво. Хороший способ избежать $"some text {x.ToStrig("D4")} after text" - person Bruno Miquelin; 21.06.2019

Очень просто

int i = 1;
i.ToString("0###")
person maeneak    schedule 21.02.2019
comment
не знаю, почему вы проголосовали против, это работает и отвечает на вопрос ops - person maeneak; 02.03.2019

Просто

int i=123;
string paddedI = i.ToString("D4");
person cahit beyaz    schedule 02.05.2013
comment
исправлено для отрицательных чисел. - person cahit beyaz; 01.11.2017
comment
Исправлено для сложности - person cahit beyaz; 08.07.2018

В .NET есть простая функция для этого в классе String. Просто используйте:

.ToString().PadLeft(4, '0')  // that will fill your number with 0 on the left, up to 4 length

int i = 1; 
i.toString().PadLeft(4,'0')  // will return "0001"  
person Hernan    schedule 03.07.2019
comment
Это работает, если у вас есть фиксированная длина строки с изменяющимся числом. Спасибо за это! :) - person Fen Ignacio; 18.12.2019
comment
int i = 1002; строка str = i.ToString (). PadLeft (4, '0'); // возвращает 1002 :) - person reza akhlaghi; 26.05.2021

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

Ниже приведен код, который выполняет это:

reciptno=1; // Pass only integer.

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

TxtRecNo.Text = formatted; // Output=0001

Я реализовал этот код, чтобы сгенерировать номер денежной квитанции для файла PDF.

person saktiprasad swain    schedule 21.06.2017
comment
Почему вы редактируете мой ответ только на заглавную букву или структуру предложения? Разве это необходимо? Разработчику следует беспокоиться о коде, а не о структуре предложения - person saktiprasad swain; 21.06.2017
comment
@Unheilig Я новичок в stackoverflow. Я думаю, что моя точка зрения уменьшилась, когда вы отредактировали мой ответ. - person saktiprasad swain; 21.06.2017
comment
Как вы указали, вы новичок в этом сообществе и незнакомы с системой редактирования, вы не потеряли баллов за редактирование, которое было предложено и одобрено сообществом. Внесенные правки значительно улучшили ваш ответ. - person Security Hound; 16.07.2017
comment
Вы думаете, что уменьшение моего балла побудит публиковать ответы на другие вопросы. Тогда я ухожу с этой платформы - person saktiprasad swain; 16.07.2017
comment
Голосование фактически анонимное. Голос против был вынесен из-за плохой грамматики. Проголосовали бы, если бы вы приняли предложение по редактированию - person Security Hound; 16.07.2017

Чтобы заполнить int i, чтобы соответствовать длине строки int x, когда оба могут быть отрицательными:

i.ToString().PadLeft((int)Math.Log10(Math.Abs(x < 0 ? x * 10 : x)) + 1, '0')
person xnp    schedule 13.12.2015
comment
Излишне сбивает с толку, особенно когда есть очень простое решение. - person Juls; 30.05.2018