Bagaimana saya bisa memformat angka menjadi string dengan angka nol di depan?


Jawaban:


344

Agak sederhana:

Key = i.ToString("D2");

Dsingkatan dari "angka desimal", 2untuk jumlah digit yang akan dicetak.


7
Jika Anda menggunakan string.Format("D2", value)Anda akan mendapatkan D2dalam output. ini tidak berhasil. Kita harus menggunakan "{0:00}"dalam hal ini.
v.oddou

42
Anda harus menggunakannya string.Format("{0:D2}", value)sebagai gantinya. Hanya mengatakan string.Format("D2", ...)tidak akan menggantikan apa pun, apa pun karena Anda tidak memiliki pengganti.
infinitypanda

5
@infinitypanda menyadari bahwa ini hanya akan berfungsi ketika valueint. Jika valueganda, misalnya, harusstring.Format("{0:00}", value)
derekantrican

jika kita berbicara tentang 'digit terdepan' saya pikir jawabannya adalah i.ToString ("00"); di mana "00" mewakili nol terkemuka .. Anda dapat meningkatkan jumlah ini sebanyak mungkin.
Dedan


72

Jika Anda ingin menjaganya tetap lebar, misalnya 10 digit, lakukan seperti ini

Key = i.ToString("0000000000");

Ganti dengan digit sebanyak yang Anda suka.

i = 123akan menghasilkan Key = "0000000123".


63

Karena belum ada yang menyebutkan ini, jika Anda menggunakan C # versi 6 atau lebih tinggi (yaitu Visual Studio 2015) maka Anda dapat menggunakan interpolasi string untuk menyederhanakan kode Anda. Jadi alih-alih menggunakan string.Format(...), Anda bisa melakukan ini:

Key = $"{i:D2}";

33

menggunakan:

i.ToString("D10")

Lihat Int32.ToString (MSDN), dan Standard Numeric Format Strings (MSDN).

Atau gunakan String.PadLeft. Sebagai contoh,

int i = 321;
Key = i.ToString().PadLeft(10, '0');

Akan menghasilkan 0000000321. Padahal String.PadLefttidak akan berfungsi untuk angka negatif.

Lihat String.PadLeft (MSDN).


4
Saya kira itu akan mengacaukan Anda setelah Anda mencoba menggunakannya dengan angka negatif.
Mario

Terima kasih - saya menggunakan yang kedua. Saya meninggalkan ".ToString ()" - masih berfungsi.
Sunsetquest

14

Biasanya String.Format ("format", objek) lebih disukai daripada objek.ToString ("format"). Karena itu,

String.Format("{0:00000}", 15);  

lebih disukai daripada,

Key = i.ToString("000000");

4
Ya, seperti yang ditanyakan oleh @cja, mengapa lebih disukai? Dan saya tidak membantah pernyataan itu, saya ingin tahu mengapa.
Christopher King

Sintaks pertama "terasa" lebih tepat, dapat diprediksi, dan jelas. Dan akan lebih baik dinyatakan sebagai Key = String.Format ("{0: 00000}", 15); yang dibandingkan dengan Key = i.ToString ("000000"); Dengan sintaks pertama, saya cukup yakin saya tahu persis hasil yang akan saya dapatkan, dan jika kebetulan saya satu karakter, saya tahu persis apa yang harus diubah (format string. Jadi, singkatnya, bagi saya itu lebih disukai untuk preferensi pribadi emosional, lemah didukung oleh satu alasan yang hampir masuk akal ;-) Jadi sudah diputuskan?
Developer63

13

Mencoba:

Key = i.ToString("000000");

Namun secara pribadi, saya akan melihat apakah Anda tidak dapat mengurutkan pada integer secara langsung, daripada representasi string.


7

Untuk string interpolasi:

$"Int value: {someInt:D4} or {someInt:0000}. Float: {someFloat: 00.00}"

3

Di sini saya ingin tidak saya membatasi dalam 4 digit seperti jika itu 1 itu harus ditampilkan sebagai 0001, jika 11 itu harus ditampilkan sebagai 0011 .. Di bawah ini adalah kode.

        reciptno=1;//Pass only integer.

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

        TxtRecNo.Text = formatted;//Output=0001..

Saya menerapkan kode ini untuk menghasilkan tanda terima uang no.


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.