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.