Memeriksa String Kosong atau Kosong di Java

1. Pengenalan

Dalam tutorial ini, kita akan melalui beberapa cara untuk memeriksa rentetan kosong atau kosong di Java. Kami mempunyai beberapa pendekatan bahasa ibunda dan juga beberapa perpustakaan.

2. Kosong vs Kosong

Sudah tentu, sangat umum untuk mengetahui kapan rentetan kosong atau kosong, tetapi mari kita pastikan kita berada di halaman yang sama dengan definisi kita.

Kami menganggap rentetan menjadi kosong jika ia sama ada null atau rentetan tanpa sebarang panjang. Sekiranya rentetan hanya terdiri dari ruang kosong sahaja, maka kami menyebutnya kosong .

Untuk Java, ruang putih adalah watak seperti spasi, tab dan sebagainya. Lihat Character.isWhitespace sebagai contoh.

3. tali kosong

3.1. Dengan Java 6 dan Ke Atas

Sekiranya kita paling tidak menggunakan Java 6, maka cara termudah untuk memeriksa rentetan kosong adalah String # isEmpty :

boolean isEmptyString(String string) { return string.isEmpty(); }

Untuk menjadikannya tidak selamat, kita perlu menambahkan cek tambahan:

boolean isEmptyString(String string)  string.isEmpty(); 

3.2. Dengan Java 5 dan Ke Bawah

String # isEmpty diperkenalkan dengan Java 6. Untuk Java 5 ke bawah, kita dapat menggunakan String # length sebagai gantinya.

boolean isEmptyString(String string)  return string == null 

Sebenarnya, String # isEmpty hanyalah jalan pintas ke String # panjang .

4. tali kosong

Kedua-dua tali # isEmpty dan String # panjang boleh digunakan untuk memeriksa kosong tali.

Sekiranya kita juga ingin mengesan tali kosong , kita dapat mencapainya dengan bantuan String # trim . Ia akan membuang semua ruang kosong yang terdahulu dan belakang sebelum melakukan pemeriksaan.

boolean isBlankString(String string)  string.trim().isEmpty(); 

Tepatnya, String # trim akan membuang semua watak utama dan belakang dengan kod Unicode kurang dari atau sama dengan U + 0020.

Dan juga ingat bahawa String s tidak berubah, jadi panggil trim tidak akan mengubah rentetan yang mendasari.

5. Pengesahan Kacang

Kaedah lain untuk memeriksa rentetan kosong adalah ungkapan biasa. Ini sangat berguna misalnya dengan Java Bean Validation:

@Pattern(regexp = "\\A(?!\\s*\\Z).+") String someString;

Ungkapan biasa yang diberikan memastikan bahawa rentetan kosong atau kosong tidak akan berlaku.

6. Dengan Apache Commons

Sekiranya boleh menambahkan kebergantungan, kita boleh menggunakan Apache Commons Lang. Ini mempunyai sejumlah pembantu untuk Java.

Sekiranya kita menggunakan Maven, kita perlu menambahkan ketergantungan commons-lang3 ke pom kita:

 org.apache.commons commons-lang3 

Antara lain, ini memberi kita StringUtils .

Kelas ini dilengkapi dengan kaedah seperti isEmpty , isBlank dan sebagainya:

StringUtils.isBlank(string)

Panggilan ini sama seperti kaedah isBlankString kita sendiri . Tidak selamat dan juga memeriksa tempat kosong.

7. Dengan Jambu Batu

Perpustakaan lain yang terkenal yang membawa utiliti berkaitan tali tertentu adalah Jambu Google. Bermula dengan versi 23.1, terdapat dua rasa Jambu Batu: android dan jre . Rasa Android mensasarkan Android dan Java 7, sedangkan rasa JRE berlaku untuk Java 8.

Sekiranya kami tidak menyasarkan Android, kami hanya boleh menambahkan rasa JRE ke pom kami:

 com.google.guava guava 28.0-jre 

Kelas Guavas Strings dilengkapi dengan kaedah Strings.isNullOrEmpty :

Strings.isNullOrEmpty(string)

Ia memeriksa sama ada rentetan yang diberikan kosong atau kosong, tetapi tidak akan memeriksa rentetan ruang kosong sahaja .

8. Kesimpulannya

Terdapat beberapa cara untuk memeriksa sama ada tali kosong atau tidak. Selalunya, kami juga ingin memeriksa sama ada rentetan kosong, yang bermaksud hanya terdiri daripada watak ruang kosong.

Cara yang paling mudah adalah menggunakan Apache Commons Lang, yang menyediakan pembantu seperti StringUtils.isBlank . Jika kita ingin berpegang teguh pada Java biasa, kita dapat menggunakan kombinasi String # trim dengan panjang String # isEmpty atau String # . Untuk Pengesahan Kacang, ungkapan biasa boleh digunakan sebagai gantinya.

Pastikan untuk memeriksa semua sampel ini di GitHub.