C # convert int to string dengan padding nol?

439

Dalam C # saya memiliki nilai integer yang perlu dikonversi ke string tetapi perlu menambahkan nol sebelum:

Sebagai contoh:

int i = 1;

Ketika saya mengonversinya menjadi string, ia harus menjadi 0001

Saya perlu tahu sintaks dalam C #.

Pinu
sumber
1
Ini dapat membantu Anda - Cara: Pad Nomor dengan Leading nol . Semoga berhasil
Koonwah

Jawaban:

709

i.ToString().PadLeft(4, '0')- Oke, tetapi tidak berfungsi untuk angka negatif
i.ToString("0000");- formulir eksplisit
i.ToString("D4");- specifier format formulir pendek
$"{i:0000}";- interpolasi string (C # 6.0+)

Jay
sumber
28
i.ToString (). PadLeft (4, '0') TIDAK bekerja untuk angka negatif, misalnya (-5) .PadLeft (4, '0') akan menjadi "00-5"
Antonio Bakula
5
cara menampilkan string dengan panjang tetap. ??
Mark Macneil Bikeio
3
@Rahul Baca ini: msdn.microsoft.com/en-us/library/…
Kevdog777
2
cara ini berfungsi untuk saya String.Format ("{0: D4}", number);
Arthur Melo
14
Menggunakan pintasan format String juga berfungsi misalnya $ "{i: D4}";
JamesSugrue
275
i.ToString("D4");

Lihat MSDN pada penentu format.

Ryan
sumber
4
cara ini berfungsi untuk saya String.Format ("{0: D4}", number);
Arthur Melo
118

Ini contoh yang bagus:

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
Denys Wessels
sumber
66

Kamu bisa menggunakan:

int x = 1;
x.ToString("0000");
Yodan Tauber
sumber
26
Dan cara kedua menggunakan string format yang sama:string.Format("{0:0000}", x)
Yodan Tauber
57

Interpolasi string gaya C # 6.0

int i = 1;
var str1 = $"{i:D4}";
var str2 = $"{i:0000}";
Dr Blowhard
sumber
Yang ini terlihat sangat bagus. Cara yang baik untuk menghindari$"some text {x.ToStrig("D4")} after text"
Bruno Miquelin
18
i.ToString("0000");
Justin Niessner
sumber
4

Peasy mudah

int i = 1;
i.ToString("0###")
maeneak
sumber
3
tidak tahu mengapa Anda memilih ini berfungsi dan menjawab pertanyaan ops
maeneak
3

Secara sederhana

int i=123;
string paddedI = i.ToString("D4");
cahit beyaz
sumber
8
Tambahkan juga kompleksitas.
Giulio Caccin
diperbaiki untuk angka negatif.
cahit beyaz
Diperbaiki untuk kerumitan
cahit beyaz
2

.NET memiliki fungsi yang mudah untuk melakukannya di Stringkelas. Cukup gunakan:

.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
sumber
Ini berfungsi jika Anda memiliki panjang string yang tetap dengan angka yang berubah. Terima kasih untuk ini! :)
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
Serge
sumber
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
sumber
-2

Di sini saya ingin mengisi nomor saya dengan 4 digit. Misalnya, jika 1 maka akan ditampilkan sebagai 0001, jika 11 harus ditampilkan sebagai 0011.

Di bawah ini adalah kode yang menyelesaikan ini:

reciptno=1; // Pass only integer.

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

TxtRecNo.Text = formatted; // Output=0001

Saya menerapkan kode ini untuk menghasilkan nomor tanda terima uang untuk file PDF.

saktiprasad swain
sumber
1
Mengapa Anda mengedit jawaban saya hanya untuk huruf besar atau struktur kalimat. Apakah perlu? Pengembang harus memiliki perhatian pada kode tidak dalam struktur kalimat
saktiprasad swain
@Unheilig Saya baru di stackoverflow. Saya pikir poin saya berkurang ketika Anda mengedit jawaban saya.
saktiprasad swain
3
Seperti yang Anda tunjukkan, Anda baru di komunitas ini dan tidak terbiasa dengan sistem edit, Anda tidak kehilangan poin dari hasil edit yang diusulkan dan disetujui oleh komunitas. Pengeditan yang dilakukan sebenarnya meningkatkan jawaban Anda secara signifikan
Security Hound
1
Voting sebenarnya anonim. Downvote dikeluarkan karena tata bahasa yang buruk. Akan terbalik jika Anda telah menerima proposal edit
Security Hound
-5

Untuk pad int iagar sesuai dengan panjang string int x, ketika keduanya bisa negatif:

i.ToString().PadLeft((int)Math.Log10(Math.Abs(x < 0 ? x * 10 : x)) + 1, '0')
xnp
sumber
2
Tidak perlu membingungkan terutama ketika ada solusi yang sangat sederhana.
Juls