StringUtils bilan tanishish
StringUtils Apache Commons da eng ko'p qo'llaniladigan sinfdir. U turli xil vositalar va metodlarni o'z ichiga oladi, ular dasturchilarga oddiy yoki murakkab kod yozishdan qochishga yordam beradi.
StringUtils sinfidagi ko'plab metodlar java.lang.String da o'z ekvivalentlariga ega, lekin java.lang.String metodlaridan farqli o'laroq, null bilan xavfsiz ishlaydi. Bu shuni anglatadiki, NullPointerException kutilmagan paytda chiqarilmaydi.
Apache Commons qator metodlarni o'z ichiga oladi va biz ularning ba'zilarini ko'rib chiqamiz.
StringUtils metodlarining ro'yxati:
| isEmpty() | Qator bo'sh ekanligini tekshiradi |
| equals() | Qatorlarni solishtiradi |
| compare() | Qatorlarni solishtiradi |
| indexOf() | Qator ichida qism satrni qidirish |
| lastIndexOf() | Qator ichida qism satrni qidirish |
| contains() | Qator ichida qism satr borligini tekshiradi |
| containsIgnoreCase() | Qator ichida qism satr borligini tekshiradi, registrga e'tibor bermasdan |
| containsAny() | Qator ichida qism satrni biron bir joyda borligini tekshiradi |
| containsNone() | Qator ichida qism satrni hech qaerda yo'qligini tekshiradi |
| containsOnly() | Qator ichida qism satr borligini tekshiradi |
| substring() | Qism satr olish |
| split() | Qatorni qism satrlarga ajratish |
| join() | Qism satrlarni birlashtirish |
| remove() | Qism satrni o'chirish |
| replace() | Qism satrni almashtirish |
| countMatches() | Uchrashuvlar sonini hisoblash |
StringUtils.isEmpty() va StringUtils.isBlank()
Har ikkala metod qator ichida biror bir matn borligini tekshirish uchun ishlatiladi. Agar qator haqiqatan ham bo'sh bo'lsa, ular true qaytaradi. Bundan tashqari, isBlank() qator faqat bo'shliqlarni o'z ichiga olsa ham true qaytaradi.
Ularning qisqacha metodlari ham mavjud: isNotEmpty() va isNotBlank().
Keling, siz isEmpty() dan java.lang.String.isEmpty() bilan birga qanday foydalanishingiz mumkinligini ko'rib chiqamiz, shuningdek isBlank():
String nullValue = null;
String emptyValue = "";
String blankValue = "\n \t \n";
if(StringUtils.isEmpty(emptyValue)) {
System.out.println("emptyValue bo'sh");
}
if(StringUtils.isBlank(blankValue)) {
System.out.println("blankValue bo'sh");
}
if(!nullValue.isEmpty()) {
System.out.println("nullString null emas");
}
Bu yerda uchta String turidagi o'zgaruvchilar mavjud. Biri null ni ko'rsatadi, ikkinchisi null emas, lekin tarkibi yo'q (bo'sh qator), uchinchisi esa bo'sh emas, lekin chop etilganda bo'sh natijani chiqaradi.
Bu kodni bajarish natijasi:
emptyValue bo'sh
blankValue bo'sh
Exception in thread "main" java.lang.NullPointerException
java.lang.String ichidagi isEmpty() metodi, null uchun xavfsiz emas. Agar sizga null ga ishora qilingan metodni chaqirish bilan bo'shligini tekshirganingizda, siz osonlik bilan NullPointerException olasiz. Sizdan oldin manzilda null ekanligini tekshirishingiz kerak bo'ladi:
String nullValue = null;
String emptyValue = "";
String blankValue = "\n \t \n";
if(StringUtils.isEmpty(emptyValue)) {
System.out.println("emptyValue bo'sh");
}
if(StringUtils.isBlank(blankValue)) {
System.out.println("blankValue bo'sh");
}
if(nullValue != null && !nullValue.isEmpty()) {
System.out.println("nullString null emas");
}
Bu endilikda quyidagi natijani beradi:
emptyValue bo'sh
blankValue bo'sh
Agar biz nullString ustida bu metodlarni sinab ko'rsak:
String nullValue = null;
if(StringUtils.isEmpty(nullValue)) {
System.out.println("nullValue bo'sh");
}
if(StringUtils.isBlank(nullValue)) {
System.out.println("nullValue bo'sh");
}
U holda quyidagilarni olamiz:
nullValue bo'sh
nullValue bo'sh
StringUtils metodlari null uchun xavfsiz va kutilgan natijani beradi, hatto ularga null yuborsak ham.
StringUtils.equals()
Bu metod ikki qatorni taqqoslaydi va agar ular identik bo'lsa yoki ikkala manzil null bo'lsa, true qaytaradi, lekin shuni yodda tutingki, bu metod registrga sezgir.
Keling, uning qanday ishlashini ko'rib chiqamiz:
System.out.println(StringUtils.equals(null, null));
System.out.println(StringUtils.equals(null, "biror ma'lumot"));
System.out.println(StringUtils.equals("biror ma'lumot", null));
System.out.println(StringUtils.equals("biror ma'lumot", "biror ma'lumot"));
System.out.println(StringUtils.equals("qo'shimcha ma'lumot", "biror ma'lumot"));
Natija:
true
false
false
true
false
equals() metodini StringUtils bilan java.lang.String.equals() ga taqqoslash uchun:
String nullValue = null;
System.out.println(StringUtils.equals(nullValue, null));
System.out.println(StringUtils.equals(nullValue, "biror ma'lumot"));
System.out.println(nullValue.equals(null));
System.out.println(nullValue.equals("biror ma'lumot"));
Bu yana sizni quyidagi natijaga olib keldi:
true
false
Exception in thread "main" java.lang.NullPointerException
Yana, null manzil uchun metod chaqirish NullPointerException ga olib keladi, va siz foydalanishdan oldin manzil o'zgaruvchisi null ekanligini tekshirishingiz kerak.
StringUtils.compare()
Bu metodning deklaratsiyasi quyidagicha:
public static int compare(final String str1, final String str2)
Bu metod ikkita qatorni leksikografik ravishda solishtiradi, bu java.lang.String.compareTo() metodi kabi, qaytaradi:
- 0, agar str1 str2 ga teng bo'lsa (yoki ikkala null)
- 0 dan kichik qiymat, agar str1 str2 dan kichik bo'lsa
- 0 dan katta qiymat, agar str1 str2 dan katta bo'lsa
Leksikografik tartib - bu lug'at tartibi. Bu bizning dasturimizda qanday ishlatilishini ko'rib chiqamiz:
System.out.println(StringUtils.compare(null, null));
System.out.println(StringUtils.compare(null , "javaRush"));
System.out.println(StringUtils.compare("javaRush", null));
System.out.println(StringUtils.compare("javaRush", "JAVARUSH"));
System.out.println(StringUtils.compare("javaRush", "javaRush"));
Natija:
0
-1
1
32
0
Eslatma: null qiymat null bo'lmagan qiymatdan kichik deb hisoblanadi. Ikkala null qiymat esa teng deb hisoblanadi.
Qator boshqa qatorni o'z ichiga olganligini tekshirish
Buning uchun StringUtils da 5 ta metod mavjud:
- contains()
- containsIgnoreCase()
- containsAny()
- containsNone()
- containsOnly()
contains() metodi qidiruv ketma-ketligi boshqa ketma-ketlikda mavjudligi yoki yo'qligiga qarab true yoki false qaytaradi.
Agar bunday metodga null yuborsak, u false qaytaradi. Agar null bo'lmasa, metod shunchaki yuborilgan obyektdan java.lang.String.indexOf(String str) ni chaqiradi.
Misollar:
String value = "JavaRush is cool";
System.out.println(StringUtils.contains(null, "a"));
System.out.println(StringUtils.contains(value, "JavaRush"));
System.out.println(StringUtils.contains(value, "C++"));
System.out.println(StringUtils.contains(value, "javarush"));
Metod registrga sezgir, shuning uchun oxirgi chaqiruv ham false qaytaradi:
false
true
false
false
containsAny() metodi, birinchi argument orqali yuborilgan qator, 2-N argumentlari orqali yuborilgan qism satrlarning kamida birortasini o'z ichiga olishini tekshirsa, true qaytaradi.
Misol:
String value = "JavaRush is cool";
System.out.println(StringUtils.containsAny(value, "cool", "c00l", "bro", "hello"));
Natija:
true
Bu metod ham registrga sezgir.
Метод containsNone()
Muayyan qator ro'yxatdagi hech narsa yo'qligini tekshirish kerak bo'lganda, containsNone() metodidan foydalanish mumkin. Birinchi parametr sifatida unga qator, keyingi parametrlarda esa qator ichida bo'lmasligi kerak bo'lgan qatorlar yuboriladi.
Misol:
String s = "JavaRush is cool";
System.out.println(StringUtils.containsNone(s, 'g', 'a'));
Konsolga chiqariladi:
false
Qism satrlar bilan ishlash
Qism satrlar bilan ishlash String sinfidagi metodlarga o'xshash:
substring(String str, int start)
substring (String str, int start, int end)
Ushbu metodlar str qatoridan qism satrni qaytaradi. Qator ikki indeks bilan beriladi: start va end. Javada qoidadagidek, oxirgi qator belgisi - end-1. Bu metodlarning afzalligi nimada?
Agar bunday metodga null berilsa, u faqat null ni qaytaradi va istisno tashlamaydi. Bu metodlar manfiy indeks qiymatlariga qo'llab-quvvatlaydi. Shu tarzda, qator uyasi kabi ko'rib chiqiladi: oxirgi belgidan keyin birinchi belgidan yana boshlanadi.
Qanday foydalanishni ko'rib chiqamiz:
System.out.println(StringUtils.substring("lets java", 2, 6));
System.out.println(StringUtils.substring("lets java", -8));
System.out.println(StringUtils.substring(null, 3));
Tepardagi kodni bajarish natijasi:
ts j
ets java
null
StringUtils.split()
Metod, qatorni qism satrlarga ajratish uchun, maxsus ajratgich belgidan foydalangan holda. Agar bunday belgilar maqsadli qator ichida mavjud bo'lsa, metod qism satrlar massivini qaytaradi. Agar belgilar bo'lmasa - bo'sh massiv qaytariladi. Agar metodga null yuborilsa, u null ni qaytaradi. Bu kodni va metodning ishlashini ko'rib chiqamiz:
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("", '.')));
Natija:
[Address, City, State, Zip, Phone, Email, Password]
null
[]
StringUtils.join()
join() metodi qator massivini bitta qatorga birlashtirish imkonini beradi. Shu bilan birga, siz maxsus ajratgich belgini kiritishingiz mumkin, bu belgi qism satrlar orasida natijaviy qatorga qo'shiladi. Agar metodga null yuborilsa, u null ni qaytaradi.
Bu metod split() metodiga mutlaqo teskari. Bu oddiy misolni ko'rib chiqamiz:
String myData = "Address, City, State, Zip, Phone, Email, Password";
String[] myString = StringUtils.split(myData, ',');
System.out.println(StringUtils.join(myString, '-'));
Tepardagi kodni bajarish natijasi:
Address- City- State- Zip- Phone- Email- Password
StringUtils.replace()
Qator ichida qatorni qidiradi, agar mavjud bo'lsa, uni yangi qator bilan almashtiradi.
Ushbu metodning deklaratsiyasi quyidagicha:
public static String replace(final String text, final String searchString, final String replacement)
Agar qidirilayotgan qator matnda topilmasa, hech narsa sodir bo'lmaydi va matn oldingidek qoladi. Agar matn null ga teng bo'lsa, bu metod null qaytaradi. Agar siz null qatorni qidirsangiz yoki qism satrni null bilan almashtirsangiz, metod asl qatorni qaytaradi.
Bu metodni sinashga harakat qilaylik:
String value = "JavaRush is the best";
System.out.println(StringUtils.replace(value, "best", "cool"));
Natija:
JavaRush is the cool
GO TO FULL VERSION