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

439

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

Например:

int i = 1;

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

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

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

Ответы:

709

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

сойка
источник
28
i.ToString (). PadLeft (4, '0') НЕ работает для отрицательных чисел, например (-5) .PadLeft (4, '0') будет "00-5"
Антонио Бакула
5
Как отобразить строку с фиксированной длиной. ??
Марк Макнейл Бикио
3
@Rahul Прочитайте это: msdn.microsoft.com/en-us/library/…
Kevdog777
2
у меня этот способ работал String.Format ("{0: D4}", число);
Артур Мело
14
Также можно использовать ярлык в формате String, например, $ "{i: D4}";
JamesSugrue
275
i.ToString("D4");

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

Райан
источник
4
у меня этот способ работал String.Format ("{0: D4}", число);
Артур Мело
118

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

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
Денис Вессельс
источник
66

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

int x = 1;
x.ToString("0000");
Йодан Таубер
источник
26
И второй способ использовать ту же строку формата:string.Format("{0:0000}", x)
Йодан Таубер
57

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

int i = 1;
var str1 = $"{i:D4}";
var str2 = $"{i:0000}";
Доктор Блоуард
источник
Это выглядит очень мило. Хороший способ избежать$"some text {x.ToStrig("D4")} after text"
Бруно
4

Очень просто

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

Просто

int i=123;
string paddedI = i.ToString("D4");
каит беяз
источник
8
Также добавьте сложность.
Джулио Качин
исправлено для отрицательных чисел.
cahit beyaz
Исправлено для сложности
cahit beyaz
2

В .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"  
Hernan
источник
Это работает, если у вас фиксированная длина строки с изменяющимся числом. Спасибо за это! :)
Фен Игнасио
0
int p = 3; // fixed length padding
int n = 55; // number to test

string t = n.ToString("D" + p); // magic     

Console.WriteLine("Hello, world! >> {0}", t);

// outputs: 
// Hello, world! >> 055
саржа
источник
0
public static string ToLeadZeros(this int strNum, int num)
{
    var str = strNum.ToString();
    return str.PadLeft(str.Length + num, '0');
}

// var i = 1;
// string num = i.ToLeadZeros(5);
Demodave
источник
-2

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

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

reciptno=1; // Pass only integer.

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

TxtRecNo.Text = formatted; // Output=0001

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

Шактипрасад Суэйн
источник
1
Почему вы редактируете мой ответ только для заглавной буквы или структуры предложения. Нужно ли это? Разработчик должен заботиться о коде, а не о структуре предложения
saktiprasad swain
@ Unheilig Я новичок в stackoverflow. Я думаю, что моя точка зрения уменьшится, когда вы отредактируете мой ответ.
Шактипрасад Суэйн
3
Как вы указали, вы новичок в этом сообществе и не знакомы с системой редактирования, вы не потеряли ни одного очка от редактирования, которое было предложено и одобрено сообществом. Сделанные правки действительно значительно улучшили ваш ответ
Security Hound
1
Голосование на самом деле анонимно. Понижение было издано из-за плохой грамматики. Проголосовал бы, если бы вы приняли предложение об изменении
Security Hound
-5

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

i.ToString().PadLeft((int)Math.Log10(Math.Abs(x < 0 ? x * 10 : x)) + 1, '0')
xnp
источник
2
Неоправданно запутанно, особенно когда есть очень простое решение.
июля