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


438

У C # у мене є ціле значення, яке потрібно перерахувати на рядок, але до нього потрібно додати нулі:

Наприклад:

int i = 1;

Коли я перетворюю його в рядок, він повинен стати 0001

Мені потрібно знати синтаксис у C #.


1
Це може допомогти вам - Як: Встановити номер з провідними нулями . Удачі
— Koonwah

Відповіді:


708

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


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


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###")

3
не знаю, чому ви проголосували, це працює і відповідає на питання ops
— maeneak


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"  

Це працює, якщо у вас фіксована довжина рядка з числом, яке змінюється. Дякую за це! :)
— Fen Ignacio

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);

-2

Тут я хочу прошити свій номер чотиризначним. Наприклад, якщо це 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.Я думаю, що мій погляд зменшується, коли ви редагували свою відповідь.
— saktiprasad swain

3
Як ви зазначаєте, ви новачок у цій спільноті та незнайомий із системою редагування, ви не втратили жодних балів від редагування, яке було запропоновано та затверджено спільнотою. Зміни, які були зроблені, фактично значно покращили вашу відповідь
— Hound Security

1
Голосування насправді анонімне. Подання було видано через погану граматику. Звернулися б, якби ви прийняли пропозицію про редагування
— Hound Security


-5

Для прокладки, int iщоб відповідати довжині рядка int x, коли обидва можуть бути негативними:

i.ToString().PadLeft((int)Math.Log10(Math.Abs(x < 0 ? x * 10 : x)) + 1, '0')

2
Зайве непорозуміння особливо, коли є дуже просте рішення.
— Juls
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.