Padat Tali dengan Nol atau Spaces di Java

1. Gambaran keseluruhan

Dalam tutorial ringkas ini, kita akan melihat cara memasukkan String di Java. Kami akan memfokuskan terutamanya pada pad kiri, yang bermaksud bahawa kita akan menambah ruang atau angka nol di hadapannya sehingga mencapai panjang yang diinginkan.

Pendekatan untuk String empuk kanan sangat serupa, jadi kami hanya akan menunjukkan perbezaannya.

2. Pad a String Menggunakan Kaedah Tersuai

The String kelas di Jawa tidak menyediakan kaedah yang mudah untuk padding, jadi mari kita membuat beberapa kaedah pada kita sendiri. Pertama, mari kita tetapkan beberapa jangkaan:

assertEquals(" 123456", padLeftZeros("123456", 10)); assertEquals("0000123456", padLeftZeros("123456", 10));

2.1. Menggunakan StringBuilder

Kami dapat mencapainya dengan StringBuilder dan beberapa logik prosedur:

public String padLeftZeros(String inputString, int length) { if (inputString.length() >= length) { return inputString; } StringBuilder sb = new StringBuilder(); while (sb.length() < length - inputString.length()) { sb.append('0'); } sb.append(inputString); return sb.toString(); }

Kita dapat lihat di sini bahawa jika panjang teks asal sama dengan atau lebih besar daripada panjang yang diinginkan, kita mengembalikan versi yang tidak berubah. Jika tidak, kami membuat String baru , bermula dengan spasi, dan menambahkan yang asal.

Tentunya, jika kita mahu menggunakan watak yang berbeza, kita boleh menggunakannya bukannya 0 .

Begitu juga, jika kita mahu pad betul, kita hanya perlu melakukan baru StringBuilder (inputString) sebaliknya dan kemudian menambah ruang pada akhir.

2.2. Menggunakan substring

Cara lain untuk melakukan padding kiri adalah untuk mewujudkan tali dengan panjang yang diingini yang mengandungi watak-watak pad sahaja dan kemudian gunakan subrentetan () kaedah :

StringBuilder sb = new StringBuilder(); for (int i = 0; i < length; i++) { sb.append(' '); } return sb.substring(inputString.length()) + inputString;

2.3. Menggunakan String.format

Dan, akhirnya, sejak Java 5, kita dapat menggunakan String .format () :

return String.format("%1$" + length + "s", inputString).replace(' ', '0');

Kita harus perhatikan bahawa secara lalai operasi padding akan dilakukan menggunakan spasi. Itulah sebabnya mengapa kita perlu menggunakan kaedah ganti () jika kita mahu menggunakan angka nol atau watak lain.

Untuk pad yang betul, kita hanya perlu menggunakan bendera yang berbeza: % 1 $ -

3. Pad a String Menggunakan Perpustakaan

Dan, ada perpustakaan luaran yang sudah menawarkan fungsi padding.

3.1. Apache Commons Lang

Apache Commons Lang menyediakan pakej kelas utiliti Java. Salah satu yang paling popular adalah StringUtils .

Untuk menggunakannya, kami perlu memasukkannya ke dalam projek kami dengan menambahkan kebergantungannya ke fail pom.xml kami :

 org.apache.commons commons-lang3 3.8.1 

Dan kemudian kita lulus inputString dan panjangnya , sama seperti kaedah yang kita buat. Kami juga boleh melepasi watak padding:

assertEquals(" 123456", StringUtils.leftPad("123456", 10)); assertEquals("0000123456", StringUtils.leftPad("123456", 10, "0"));

Sekali lagi, String akan dilengkapi dengan spasi secara lalai atau kita perlu menetapkan watak pad lain secara eksplisit.

Terdapat juga kaedah rightPad () yang sesuai.

Untuk meneroka lebih banyak ciri Apache Commons Lang 3, anda boleh melihat tutorial pengenalan kami. Sekiranya anda ingin melihat cara lain manipulasi String menggunakan kelas StringUtils , sila rujuk artikel ini .

3.2. Jambu Batu Google

Perpustakaan lain yang boleh kita gunakan ialah Jambu Batu Google. Sudah tentu, kita perlu menambahkannya ke projek dengan menambahkan kebergantungannya:

 com.google.guava guava 27.0-jre 

Dan kemudian gunakan kelas Strings :

assertEquals(" 123456", Strings.padStart("123456", 10, ' ')); assertEquals("0000123456", Strings.padStart("123456", 10, '0'));

Tidak ada watak pad lalai dalam kaedah ini, jadi kita perlu meneruskannya setiap masa.

Untuk pad kanan, kita boleh menggunakan kaedah padEnd () .

Perpustakaan Jambu menawarkan lebih banyak ciri dan kami telah merangkumi banyak daripadanya. Anda boleh melihat di sini untuk artikel berkaitan Jambu Batu .

4. Kesimpulan

Dalam artikel ringkas ini, kami menggambarkan bagaimana kami dapat memasukkan String di Java. Kami memberikan contoh menggunakan implementasi sendiri atau perpustakaan yang ada.

Seperti biasa, kod sumber lengkap boleh didapati di GitHub.