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 #.


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


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


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

14
Menggunakan pintasan format String juga berfungsi misalnya $ "{i: D4}";
JamesSugrue


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

66

Kamu bisa menggunakan:

int x = 1;
x.ToString("0000");

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}";

Yang ini terlihat sangat bagus. Cara yang baik untuk menghindari$"some text {x.ToStrig("D4")} after text"
Bruno Miquelin


4

Peasy mudah

int i = 1;
i.ToString("0###")

3
tidak tahu mengapa Anda memilih ini berfungsi dan menjawab pertanyaan ops
maeneak


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"  

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

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

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.


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

2
Tidak perlu membingungkan terutama ketika ada solusi yang sangat sederhana.
Juls
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.