Memformat Integer menggunakan Java String Format


129

Saya bertanya-tanya apakah mungkin, menggunakan metode String.format di Jawa, untuk memberikan bilangan bulat nol sebelumnya?

Sebagai contoh:

1 akan menjadi 001
2 akan menjadi 002
...
11 akan menjadi 011
12 akan menjadi 012
...
526 akan tetap sebagai 526
... dll

Saat ini saya sudah mencoba kode berikut:

String imageName = "_%3d" + "_%s";

for( int i = 0; i < 1000; i++ ){
    System.out.println( String.format( imageName, i, "foo" ) );
}

Sayangnya, ini mendahului angka dengan 3 ruang kosong. Apakah mungkin untuk mendahului angka dengan nol saja?


Jawaban:


172

Gunakan %03ddalam specifier format untuk integer. The 0berarti bahwa nomor akan menjadi nol-penuh jika kurang dari tiga (dalam kasus ini) digit.

Lihat Formatterdokumen untuk pengubah lainnya.


211
String.format("%03d", 1)  // => "001"
//              │││   └── print the number one
//              ││└────── ... as a decimal integer
//              │└─────── ... minimum of 3 characters wide
//              └──────── ... pad with zeroes instead of spaces

Lihat java.util.Formatteruntuk informasi lebih lanjut.


13

Jika Anda menggunakan perpustakaan pihak ketiga yang disebut apache commons-lang, solusi berikut ini bisa berguna:

Gunakan StringUtilskelas apache commons-lang :

int i = 5;
StringUtils.leftPad(String.valueOf(i), 3, "0"); // --> "005"

Seperti StringUtils.leftPad()lebih cepat dariString.format()


StringUtils.leftPad adalah pilihan lain yang bagus dan dapat diperdebatkan bahwa itu lebih mudah dibaca dan memungkinkan Anda untuk menggunakan karakter lain. Saya sudah memiliki Google di sekitar, tetapi saya tidak dapat menemukan apa pun yang menegaskan lebih cepat - dapatkah Anda memberikan beberapa bukti untuk itu?
Kepalaku Sakit

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.