Bagaimana Anda meninggalkan pad int
dengan nol saat mengonversi ke String
dalam java?
Saya pada dasarnya ingin menambah bilangan bulat 9999
dengan memimpin nol (misalnya 1 = 0001
).
java
formatting
zero-pad
Omar Kooheji
sumber
sumber
new String(Integer.toString(num + 10000)).substring(1)
pendekatan jikanum
ada yang lebih besar dari 9999, ijs.Jawaban:
Gunakan
java.lang.String.format(String,Object...)
seperti ini:untuk zero-padding dengan panjang 5. Untuk output heksadesimal, ganti
d
dengan ax
seperti pada"%05x"
.Opsi pemformatan lengkap didokumentasikan sebagai bagian dari
java.util.Formatter
.sumber
String.format
menjadi serupa dengan printf () di C?%012d
%d can't format java.lang.String arguments
Katakanlah Anda ingin mencetak
11
sebagai011
Anda bisa menggunakan formatter :
"%03d"
.Anda dapat menggunakan formatter ini seperti ini:
Atau, beberapa metode java secara langsung mendukung pemformat ini:
sumber
F
format () harusf
:String.format(...);
.int prefixLength = requiredTotalLength - String.valueOf(numericValue).length
), dan kemudian menggunakan metode string berulang untuk membuat awalan yang diperlukan. Ada berbagai cara untuk mengulang string, tetapi tidak ada yang asli java, afaik: stackoverflow.com/questions/1235179/…Jika Anda karena alasan apa pun menggunakan pra 1.5 Java maka dapat mencoba dengan metode Apache Commons Lang
sumber
Menemukan contoh ini ... Akan menguji ...
Menguji ini dan:
Keduanya berfungsi, untuk tujuan saya, saya pikir String.Format lebih baik dan lebih ringkas.
sumber
Jika kinerja penting dalam kasus Anda, Anda bisa melakukannya sendiri dengan overhead yang lebih sedikit dibandingkan dengan
String.format
fungsinya:Performa
Hasil
Fungsi sendiri: 1697 ms
String.format: 38134ms
sumber
for( int i : data ) strData += (i > 9 ? (i > 99 ? "" : "0") : "00") + Integer.toString( i ) + "|";
Itu bekerja sangat cepat (maaf saya tidak mengatur waktu!).Anda dapat menggunakan Google Guava :
Maven:
Kode sampel:
catatan:
Guava
adalah perpustakaan yang sangat berguna, juga menyediakan banyak fitur yang terkait denganCollections
,Caches
,Functional idioms
,Concurrency
,Strings
,Primitives
,Ranges
,IO
,Hashing
,EventBus
, dllRef: GuavaExplained
sumber
Coba yang ini:
sumber
Meskipun banyak dari pendekatan di atas baik, tetapi kadang-kadang kita perlu memformat bilangan bulat serta mengapung. Kita dapat menggunakan ini, terutama ketika kita perlu memasukkan angka nol tertentu di sebelah kiri dan kanan angka desimal.
sumber
jika Anda ingin mencetak teks yang diformat langsung ke layar.
sumber
String.format
danSystem.out.format
sebutjava.util.Formatter
implementasi yang sama .Gunakan kelas DecimalFormat, seperti:
OUTPUT: 0000811
sumber
Inilah cara Anda dapat memformat string Anda tanpa menggunakan
DecimalFormat
.String.format("%02d", 9)
String.format("%03d", 19)
String.format("%04d", 119)
sumber
Periksa kode saya yang akan berfungsi untuk integer dan String.
Asumsikan angka pertama kita adalah 2. Dan kita ingin menambahkan nol untuk itu sehingga panjang string akhir akan menjadi 4. Untuk itu Anda dapat menggunakan kode berikut
sumber
(new char[diff])
mengapareplace("\0", "0")
apa itu ... apaAnda perlu menggunakan Formatter, kode berikut menggunakan NumberFormat
sumber
Satu-satunya masalah dengan pendekatan ini adalah bahwa hal itu membuat Anda memakai topi berpikir Anda untuk mengetahui cara kerjanya.
sumber
number
atau dengan yangwidth
lebih besar dari 18.Tidak perlu paket:
Ini akan membuat string menjadi tiga karakter, dan mudah untuk menambahkan bagian lebih banyak untuk empat atau lima. Saya tahu ini bukan solusi yang sempurna dengan cara apa pun (terutama jika Anda menginginkan tali besar yang empuk), tetapi saya menyukainya.
sumber