A StringUtils bemutatása
A StringUtils a leggyakrabban használt Apache Commons osztály. Különböző segédprogramokat és módszereket tartalmaz, amelyek segítenek a fejlesztőknek elkerülni, hogy alapműveletekhez ne írjanak sablonokat vagy egyszerűen nehézkes kódokat.
A StringUtils osztály számos metódusának van java.lang.String megfelelője , de a java.lang.String metódusokkal ellentétben null-biztonságosak. Ez azt jelenti, hogy a NullPointerException nem a legváratlanabb pillanatban jelenik meg .
Az Apache Commons számos módszert tartalmaz, és a leggyakrabban használt módszereket tekintjük át.
A StringUtils metódusok listája:
üres() | Ellenőrzi, hogy egy karakterlánc üres-e |
egyenlő () | Összehasonlítja a karakterláncokat |
összehasonlítani () | Összehasonlítja a karakterláncokat |
indexe() | Alkarakterlánc keresése egy karakterláncban |
lastIndexOf() | Alkarakterlánc keresése egy karakterláncban |
tartalmazza () | Ellenőrzi, hogy egy részkarakterlánc szerepel-e egy karakterláncban |
tartalmazza IgnoreCase() | Ellenőrzi, hogy egy karakterláncban előfordul-e egy részkarakterlánc, figyelmen kívül hagyva a kis- és nagybetűket |
tartalmazAny() | Ellenőrzi, hogy a karakterláncban bárhol előfordul-e részkarakterlánc |
Nincs benne() | Ellenőrzi, hogy a karakterláncban bárhol előfordul-e részkarakterlánc |
csak tartalmaz() | Ellenőrzi, hogy egy részkarakterlánc szerepel-e egy karakterláncban |
részkarakterlánc() | Egy részkarakterlánc beszerzése |
hasított() | Egy karakterlánc felosztása részkarakterláncokra |
csatlakozik() | részkarakterláncok összefűzése |
eltávolítás() | Egy részkarakterlánc eltávolítása |
csere() | Cserélje ki a részkarakterláncot |
countMatch() | A mérkőzések számának számolása |
StringUtils.isEmpty() és StringUtils.isBlank()
Mindkét módszerrel ellenőrizhető, hogy egy karakterlánc tartalmaz-e szöveget. Igazat adnak vissza, ha a karakterlánc valóban üres. Ezenkívül az isBlank() igazat ad vissza, ha a karakterlánc csak szóközt tartalmaz.
Saját inverz metódusaik is vannak: isNotEmpty() és isNotBlank() .
Nézzük meg, hogyan használhatod az isEmpty()-t a java.lang.String.isEmpty() megfelelőjével együtt , valamint az isBlank()-t :
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");
}
Itt három String típusú változó található . Az egyik nullára mutat , a második nem null , de nincs tartalma (üres karakterlánc), a harmadik pedig nem üres, hanem üres eredményt fog kiírni.
A kód futtatása a következőket eredményezi:
emptyValue is emptyValue
blankValue is blankValue
Exception in thread "main" java.lang.NullPointerException
A java.lang.String- be beépített isEmpty() metódus nem null safe . Könnyen kap egy NullPointerException kivételt , ha megpróbálja ellenőrizni, hogy üres-e, mert a metódust null hivatkozáson hívja meg . Előzetesen ellenőrizni kell, hogy a hivatkozás érvénytelen-e:
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");
}
Ennek most a következő az eredménye:
emptyValue is emptyValue
blankValue is blankValue
És ha ezeket a módszereket tovább teszteljüknullString:
String nullValue = null;
if(StringUtils.isEmpty(nullValue)) {
System.out.println("nullValue is emptyValue");
}
if(StringUtils.isBlank(nullValue)) {
System.out.println("nullValue is blankValue");
}
Akkor kapjuk:
nullValue is emptyValue
nullValue is blankValue
A StringUtils metódusok null biztonságosak , és akkor is a várt eredményt adják, ha nullát adnak át .
StringUtils.equals()
Ez a módszer összehasonlít két karakterláncot, és igaz értéket ad vissza , ha azok azonosak, vagy ha mindkét hivatkozás nullra mutat , de ügyeljen arra, hogy ez a módszer megkülönbözteti a kis- és nagybetűket.
Lássuk, hogyan működik:
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"));
Eredmény:
true
false
false
true
false
A StringUtils equals() metódusának összehasonlítása a java.lang.String.equals() -val :
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"));
Ez visszavezeti a következőkhöz:
true
false
Exception in thread "main" java.lang.NullPointerException
Ismét egy metódus null hivatkozáson való meghívása NullPointerExceptiont eredményez , és használat előtt ellenőriznie kell, hogy a referenciaváltozó nulla -e.
StringUtils.compare()
A módszer deklarációja így néz ki:
public static int compare(final String str1, final String str2)
Ez a metódus két karakterláncot lexikográfiailag hasonlít össze, ahogy a java.lang.String.compareTo() metódus teszi , és a következőt adja vissza:
- 0, ha str1 egyenlő str2-vel (vagy mindkettő nulla)
- Az érték kisebb, mint 0, ha str1 kisebb, mint str2
- 0-nál nagyobb érték, ha str1 nagyobb, mint str2
A lexikográfiai rend a szótárrend. Lássuk, hogyan használhatjuk ezt a programunkban:
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"));
Kapunk:
0
-1
1
32
0
Megjegyzés: A null értéket kisebbnek tekintjük, mint a nem null értéket . Két null értéket egyenlőnek tekintünk.
Annak ellenőrzése, hogy egy karakterlánc tartalmaz-e másik részkarakterláncot
Ehhez a StringUtils 5 módszerrel rendelkezik:
- tartalmazza ()
- tartalmazza IgnoreCase()
- tartalmazAny()
- Nincs benne()
- csak tartalmaz()
A include() metódus igaz vagy hamis értéket ad vissza attól függően, hogy a keresési sorozat egy másik sorozatban szerepel-e vagy sem.
Ha nullát adunk át egy ilyen metódusnak, akkor false értéket ad vissza . Ha nem null értéket adunk át , a metódus egyszerűen meghívja a java.lang.String.indexOf(String str) függvényt az átadott objektumon.
Példák:
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"));
A metódus megkülönbözteti a kis- és nagybetűket, így az utolsó hívás is false értéket ad vissza :
false
true
false
false
A includeAny() metódus igazat ad vissza , ha az első argumentumként átadott karakterlánc legalább egyet tartalmaz a 2-N argumentumban átadott részkarakterláncok közül.
Példa:
String value = "CodeGym is cool";
System.out.println(StringUtils.containsAny(value, "cool", "c00l", "bro", "hello"));
Megjelenik:
true
Ez a módszer is megkülönbözteti a kis- és nagybetűket.
includeNone() metódus
Ha ellenőrizni kell, hogy egy adott karakterlánc nem tartalmaz-e semmit a listából, használhatja a includeNone() metódust . Az első paraméter egy karakterlánc, a következő paraméterek pedig olyan karakterláncok, amelyek nem lehetnek a célnyelőben.
Példa:
String s = "CodeGym is cool";
System.out.println(StringUtils.containsNone(s, 'g', 'a'));
Konzol kimenet:
false
Munka részkarakterláncokkal
A részkarakterláncokkal végzett munka hasonló a String osztály metódusaival való munkához :
substring(String str, int start)
substring (String str, int start, int end)
Ezek a metódusok egy részkarakterláncot adnak vissza az str karakterláncból . A karakterláncot két index adja: start és end . És ahogy az lenni szokott a Java-ban, a tartomány utolsó karaktere az end-1 . Mi az előnye ezeknek a módszereknek?
Ha nullát adunk át egy ilyen metódusnak, az egyszerűen nullát ad vissza, ahelyett, hogy kivételt dobna. Ezek a módszerek támogatják a negatív indexértékeket. Ebben az esetben a karakterlánc zárt huroknak számít. Az utolsó karaktert az első követi, és így tovább.
Lássuk, hogyan tudjuk használni:
System.out.println(StringUtils.substring("lets java", 2, 6));
System.out.println(StringUtils.substring("lets java", -8));
System.out.println(StringUtils.substring(null, 3));
A fenti kód futtatása a következőket eredményezi:
ts j
ets java
null
StringUtils.split()
Egy metódus, amely lehetővé teszi, hogy egy karakterláncot részkarakterláncokra ossza fel egy speciális határoló karakter használatával. Ha van ilyen a célkarakterláncban, akkor a metódus részkarakterláncok tömbjét adja vissza. Ha nincs karakter, akkor a rendszer egy üres tömböt ad vissza. Nos, ha a null értéket adjuk át a metódusnak, akkor a null értéket adja vissza . Nézzük meg ezt a kódot és a módszer működését:
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("", '.')));
Eredmény:
[Address, City, State, Zip, Phone, Email, Password]
null
[]
StringUtils.join()
A join() metódus lehetővé teszi karakterláncok tömbjének összefűzését egyetlen karakterláncba. Ugyanakkor egy speciális elválasztó karakter is átadható neki, amely a kapott karakterláncban részkarakterek közé kerül. És ha nullát adunk át a metódusnak, akkor nullát ad vissza .
Ez a metódus pontosan az ellentéte a split() metódusnak . Nézzük ezt az egyszerű példát:
String myData = "Address, City, State, Zip, Phone, Email, Password";
String[] myString = StringUtils.split(myData, ',');
System.out.println(StringUtils.join(myString, '-'));
A fenti kód futtatása a következőket eredményezi:
Address- City- State- Zip- Phone- Email- Password
StringUtils.replace()
Megkeres egy karakterláncot egy karakterláncon belül, megkeresi, ha létezik, és minden előfordulását lecseréli egy új karakterláncra.
A módszer deklarációja így néz ki:
public static String replace(final String text, final String searchString, final String replacement)
Ha a keresési karakterlánc nem található a szövegben, akkor nem történik semmi, és a szöveg ugyanaz marad. Ugyanezt a logikát követve, ha a szöveg null , akkor ez a metódus null -ot ad vissza . Ha null karakterláncot keres , vagy egy részstringet nullra cserél , akkor a metódus az eredeti karakterláncot adja vissza.
Próbáljuk ki ezt a módszert:
String value = "CodeGym is the best";
System.out.println(StringUtils.replace(value, "best", "cool"));
Eredmény:
CodeGym is the cool