Inilah String, misalnya:
"Apple"
dan saya ingin menambahkan nol untuk mengisi 8 karakter:
"000Apple"
Bagaimana saya bisa melakukannya?
java
string
formatting
format
Roy
sumber
sumber
("0000" + theString).substring(theString.length())
lebih realistis. Ini bantalantheString
dengan nol terkemuka. Maaf tidak bisa menolak menambahkan komentar ini :)StringBuilder
, dan dibutuhkan loop untuk mengisinya. Jika persyaratan benar-benar hanya memotong string 8-karakter yang ok, meskipun itu adalah kasus penggunaan yang sangat sempit, tetapi solusi ini tidak pernah bisa disebut cepat. Itu hanya singkat.sumber
%07s
alih-alih%07d
, Anda akan mendapatkanFormatFlagsConversionMismatchException
. kamu bisa mencobanya.Ini dari commons-lang . Lihat javadoc
sumber
Inilah yang dia benar-benar minta, saya yakin:
keluaran:
sumber
DuplicateFormatFlagsException
(karena00
dalam format string). Jika Anda mengganti string yang lebih panjang dari 8 karakter, ini menghasilkanIllegalFormatFlagsException
(karena angka negatif).String.format("%0"+ (9 - "Apple".length() )+"d%s",0 ,"Apple").substring(0,8);
? Sekarang Anda tidak akan memiliki pengecualian ini.String.format("%0"+ (9 - "Apple".length() )+"d%s",0 ,"Apple").substring(0,8);
itu SALAH, seharusnya begituString.format("%0"+ (9 - "Apple".length() )+"d%s",0 ,"Apple").substring(1,9);
.Anda dapat menggunakan metode String.format seperti yang digunakan dalam jawaban lain untuk menghasilkan string 0,
Ini dapat diterapkan untuk masalah Anda dengan secara dinamis menyesuaikan jumlah 0 di dalam string format:
Ini masih merupakan solusi yang berantakan, tetapi memiliki keuntungan bahwa Anda dapat menentukan panjang total dari string yang dihasilkan menggunakan argumen integer.
sumber
Menggunakan
Strings
kelas utilitas Guava :sumber
Anda bisa menggunakan ini:
sumber
Saya sudah dalam situasi yang sama dan saya menggunakan ini; Cukup ringkas dan Anda tidak perlu berurusan dengan panjang atau perpustakaan lain.
Sederhana dan rapi. Format string kembali
" Apple"
jadi setelah mengganti spasi dengan nol, ini memberikan hasil yang diinginkan.sumber
sumber
Gunakan Apache Commons StringUtils.leftPad (atau lihat kode untuk membuat fungsi Anda sendiri).
sumber
sumber
Anda mungkin harus menjaga edgecase. Ini adalah metode generik.
sumber
sumber
sumber
Di Jawa:
Dalam Scala:
Anda juga dapat menjelajahi cara di Java 8 untuk melakukannya menggunakan aliran dan mengurangi (mirip dengan cara saya melakukannya dengan Scala). Ini sedikit berbeda dengan semua solusi lain dan saya sangat menyukainya.
sumber
Ini cepat & bekerja berapa pun panjangnya.
sumber
Bisa lebih cepat daripada Chris Lercher menjawab ketika sebagian besar di String memiliki 8 karakter
dalam kasus saya di komputer saya 1/8 lebih cepat.
sumber
Ini adalah versi sederhana "tanpa skrip yang dapat dibaca" dari API yang saya gunakan untuk pra-padding sebuah string. (Sederhana, Mudah Dibaca, dan Dapat Disesuaikan).
sumber
Adakah yang mencoba solusi Java murni ini (tanpa SpringUtils):
Sayangnya solusi ini hanya berfungsi jika Anda tidak memiliki spasi kosong dalam sebuah string.
sumber
Jika Anda ingin menulis program dalam Java murni, Anda dapat mengikuti metode di bawah ini atau ada banyak Utilitas Tali untuk membantu Anda lebih baik dengan fitur yang lebih canggih.
Dengan menggunakan metode statis sederhana, Anda dapat mencapainya seperti di bawah ini.
Anda dapat menggunakan metode di atas
addLeadingText(length, padding text, your text)
Outputnya akan menjadi 000Apple
sumber
Itu tidak cantik, tetapi berhasil. Jika Anda memiliki akses apache commons saya sarankan menggunakannya
sumber