Pengantar StringUtils

StringUtils adalah kelas Apache Commons yang paling banyak digunakan. Ini berisi berbagai utilitas dan metode yang membantu pengembang menghindari penulisan boilerplate atau hanya kode yang berat untuk operasi dasar.

Banyak metode di kelas StringUtils memiliki java.lang.String yang setara tetapi, tidak seperti metode java.lang.String , aman untuk null. Ini berarti NullPointerException tidak dilontarkan pada saat yang paling tidak terduga.

Apache Commons berisi sejumlah metode, dan kita akan melihat beberapa metode yang paling umum digunakan.

Daftar metode StringUtils:

kosong() Memeriksa apakah string kosong
sama dengan() Membandingkan string
membandingkan() Membandingkan string
Indeks() Menemukan substring dalam sebuah string
lastIndexOf() Menemukan substring dalam sebuah string
mengandung() Memeriksa apakah substring ada dalam string
berisiIgnoreCase() Memeriksa kemunculan substring dalam string, mengabaikan huruf besar-kecil
berisi Apa saja() Memeriksa apakah substring terjadi di mana saja dalam string
berisiTidak ada() Memeriksa apakah substring terjadi di mana saja dalam string
berisiHanya() Memeriksa apakah substring ada dalam string
substring() Mendapatkan substring
membelah() Memisahkan string menjadi substring
bergabung() menggabungkan substring
menghapus() Menghapus substring
mengganti() Ganti substring
countMatch() Menghitung jumlah pertandingan

StringUtils.isEmpty() dan StringUtils.isBlank()

Kedua metode ini digunakan untuk memeriksa apakah suatu string berisi teks apa pun. Mereka mengembalikan true jika string benar-benar kosong. Selain itu, isBlank() juga akan mengembalikan true jika string hanya berisi spasi.

Mereka juga memiliki metode kebalikannya sendiri: isNotEmpty() dan isNotBlank() .

Mari kita lihat bagaimana Anda bisa menggunakan isEmpty() bersama dengan java.lang.String.isEmpty() rekanannya , serta isBlank() :

String nullValue = null;
String emptyValue = "";
String blankValue = "\n \t   \n";

if(StringUtils.isEmpty(emptyValue)) {
   System.out.println("emptyValue is emptyValue");
}

if(StringUtils.isBlank(blankValue)) {
   System.out.println("blankValue is blankValue");
}

if(!nullValue.isEmpty()) {
   System.out.println("nullString isn't null");
}

Ada tiga variabel tipe String di sini . Satu menunjuk ke null , yang kedua bukan nol tetapi tidak memiliki konten (string kosong), dan yang ketiga tidak kosong tetapi akan mencetak hasil kosong.

Menjalankan kode ini menghasilkan:

emptyValue is emptyValue
blankValue is blankValue
Exception in thread "main" java.lang.NullPointerException

Metode isEmpty() yang dibangun ke dalam java.lang.String tidak aman untuk null . Anda akan dengan mudah mendapatkan NullPointerException jika Anda mencoba memeriksa apakah kosong, karena Anda memanggil metode tersebut pada null reference . Penting untuk memeriksa terlebih dahulu apakah referensi tersebut nol:

String nullValue = null;
String emptyValue = "";
String blankValue = "\n \t   \n";

if(StringUtils.isEmpty(emptyValue)) {
   System.out.println("emptyValue is emptyValue");
}

if(StringUtils.isBlank(blankValue)) {
   System.out.println("blankValue is blankValue");
}

if(nullValue != null && !nullValue.isEmpty()) {
   System.out.println("nullString isn't null");
}

Sekarang ini menghasilkan:

emptyValue is emptyValue
blankValue is blankValue

Dan jika kita menguji metode ininullString:

String nullValue = null;

if(StringUtils.isEmpty(nullValue)) {
   System.out.println("nullValue is emptyValue");
}

if(StringUtils.isBlank(nullValue)) {
   System.out.println("nullValue is blankValue");
}

Kemudian kita mendapatkan:

nullValue is emptyValue
nullValue is blankValue

Metode StringUtils adalah null aman dan menghasilkan hasil yang diharapkan bahkan jika diteruskan null .

StringUtils.equals()

Metode ini membandingkan dua string dan mengembalikan nilai true jika keduanya identik atau jika kedua referensi mengarah ke null , tetapi ketahuilah bahwa metode ini peka huruf besar-kecil.

Mari kita lihat cara kerjanya:

System.out.println(StringUtils.equals(null, null));
System.out.println(StringUtils.equals(null, "some information"));
System.out.println(StringUtils.equals("some information", null));
System.out.println(StringUtils.equals("some information",  "some information"));
System.out.println(StringUtils.equals("some additional information", "some information"));

Hasil:

true
false
false
true
false

Untuk membandingkan metode equals() dari StringUtils dengan java.lang.String.equals() :

String nullValue = null;

System.out.println(StringUtils.equals(nullValue, null));
System.out.println(StringUtils.equals(nullValue, "some information"));

System.out.println(nullValue.equals(null));
System.out.println(nullValue.equals("some information"));

Ini membawa Anda kembali ke:

true
false
Exception in thread "main" java.lang.NullPointerException

Sekali lagi, memanggil metode pada referensi nol menghasilkan NullPointerException , dan Anda perlu memeriksa apakah variabel referensi adalah nol sebelum menggunakannya.

StringUtils.bandingkan()

Deklarasi metode ini terlihat seperti ini:

public static int compare(final String str1, final String str2)

Metode ini membandingkan dua string secara leksikografis, seperti yang dilakukan metode java.lang.String.compareTo() , mengembalikan:

  • 0 jika str1 sama dengan str2 (atau keduanya null)
  • Nilai kurang dari 0 jika str1 lebih kecil dari str2
  • Nilai lebih besar dari 0 jika str1 lebih besar dari str2

Urutan leksikografis adalah urutan kamus. Mari kita lihat bagaimana kita dapat menggunakan ini dalam program kita:

System.out.println(StringUtils.compare(null, null));
System.out.println(StringUtils.compare(null , "codeGym"));
System.out.println(StringUtils.compare("codeGym", null));
System.out.println(StringUtils.compare("codeGym", "CODEGYM"));
System.out.println(StringUtils.compare("codeGym", "codeGym"));

Kita mendapatkan:

0
-1
1
32
0

Catatan: Nilai nol dianggap kurang dari nilai bukan nol . Dua nilai nol dianggap sama.

Memeriksa apakah suatu string berisi substring lain

Untuk melakukan ini, StringUtils memiliki 5 metode:

  • mengandung()
  • berisiIgnoreCase()
  • berisi Apa saja()
  • berisiTidak ada()
  • berisiHanya()

Metode berisi () mengembalikan benar atau salah tergantung pada apakah urutan pencarian terkandung dalam urutan lain atau tidak.

Jika null diteruskan ke metode seperti itu , ia akan mengembalikan false . Jika non- null dilewatkan , metode ini hanya akan memanggil java.lang.String.indexOf(String str) pada objek yang diteruskan.

Contoh:

String value = "CodeGym is cool";

System.out.println(StringUtils.contains(null, "a"));
System.out.println(StringUtils.contains(value, "CodeGym"));
System.out.println(StringUtils.contains(value, "C++"));
System.out.println(StringUtils.contains(value, "codegym"));

Metode ini sensitif huruf, jadi panggilan terakhir juga akan mengembalikan false :

false
true
false
false

Metode containsAny() mengembalikan nilai true jika string yang diteruskan sebagai argumen pertama berisi setidaknya satu substring yang diteruskan dalam argumen 2-N.

Contoh:

String value = "CodeGym is cool";
System.out.println(StringUtils.containsAny(value, "cool", "c00l", "bro", "hello"));

Akan menampilkan:

true

Metode ini juga peka terhadap huruf besar-kecil.

berisiNone() metode

Saat Anda perlu memeriksa bahwa string tertentu tidak berisi apa pun dari daftar, Anda dapat menggunakan metode containsNone() . Parameter pertama adalah string, dan parameter berikutnya adalah string yang tidak boleh ada di sink target.

Contoh:

String s = "CodeGym is cool";
System.out.println(StringUtils.containsNone(s, 'g', 'a'));

Keluaran konsol:

false

Bekerja dengan substring

Bekerja dengan substring mirip dengan bekerja dengan metode kelas String :

substring(String str, int start)
substring (String str, int start, int end)

Metode ini mengembalikan substring dari string str . String diberikan oleh dua indeks: start dan end . Dan seperti biasa di Java, karakter terakhir dari range adalah end-1 . Apa keuntungan dari metode ini?

Jika Anda meneruskan null ke metode seperti itu , metode tersebut hanya akan mengembalikan null alih-alih memberikan pengecualian. Metode ini mendukung nilai indeks negatif. Dalam hal ini, string dianggap sebagai loop tertutup. Karakter terakhir diikuti oleh yang pertama, dan seterusnya.

Mari kita lihat bagaimana kita bisa menggunakannya:

System.out.println(StringUtils.substring("lets java", 2, 6));
System.out.println(StringUtils.substring("lets java", -8));
System.out.println(StringUtils.substring(null, 3));

Menjalankan kode di atas memberi kita:

ts j
ets java
null

StringUtils.split()

Metode yang memungkinkan Anda membagi string menjadi substring menggunakan karakter pembatas khusus. Jika ada satu di string target, maka metode ini akan mengembalikan array substring. Jika tidak ada karakter, array kosong akan dikembalikan. Nah, jika null diteruskan ke metode , itu akan mengembalikan null . Mari kita lihat kode ini dan bagaimana metode ini bekerja:

String myData = "Address, City, State, Zip, Phone, Email, Password";

System.out.println(Arrays.toString(StringUtils.split(myData, ',')));
System.out.println(Arrays.toString(StringUtils.split(null, '.')));
System.out.println(Arrays.toString(StringUtils.split("", '.')));

Hasil:

[Address,  City,  State,  Zip,  Phone,  Email,  Password]
null
[]

StringUtils.bergabung()

Metode join() memungkinkan Anda menggabungkan array string menjadi satu string. Pada saat yang sama, karakter pemisah khusus dapat diteruskan ke sana, yang akan ditambahkan di antara substring dalam string yang dihasilkan. Dan jika null diteruskan ke metode , maka itu akan mengembalikan null .

Metode ini adalah kebalikan dari metode split() . Mari kita lihat contoh sederhana ini:

String myData = "Address, City, State, Zip, Phone, Email, Password";

String[] myString =  StringUtils.split(myData, ',');
System.out.println(StringUtils.join(myString, '-'));

Menjalankan kode di atas memberi kita:

Address- City- State- Zip- Phone- Email- Password

StringUtils.ganti()

Mencari string di dalam string, menemukannya jika ada, dan mengganti semua kemunculannya dengan string baru.

Deklarasi metode ini terlihat seperti ini:

public static String replace(final String text, final String searchString, final String replacement)

Jika string pencarian tidak ditemukan dalam teks, maka tidak akan terjadi apa-apa dan teks akan tetap sama. Mengikuti logika yang sama, jika teksnya null , metode ini mengembalikan null . Jika Anda mencari string nol atau mengganti substring dengan null , metode ini akan mengembalikan string asli.

Mari kita coba metode ini:

String value = "CodeGym is the best";
System.out.println(StringUtils.replace(value, "best", "cool"));

Hasil:

CodeGym is the cool