Apache StringUtils: alatka stvorena za Java niske
Niske (String) se u našem svakodnevnom radu koriste veoma, veoma mnogo.
U našem kodu često treba da proverimo da li je niska prazna, isečemo nisku, promenimo veličinu slova, podelimo nisku, uporedimo niske, uklonimo višak razmaka, nadovežemo niske, koristimo regularne izraze i tako dalje.
Ako se oslonimo samo na metode koje pruža klasa String, moramo ručno da napišemo mnogo dodatnog koda, inače lako dolazi do raznih izuzetaka.
Dobra vest je: alatka StringUtils iz paketa org.apache.commons.lang3 pruža nam veoma bogat izbor metoda.
Maven koordinate:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>StringUtils pruža veoma mnogo praktičnih metoda — na slici ispod ih ima oko četiri do pet stranica, a ja sam uhvatio samo dve, prosto ih je previše.

Zatim ćemo na nekim često korišćenim metodama pokazati primere.
Provera da li je niska prazna
Prazna niska zapravo nije samo null; tu su i "", " ", "null" i razne druge situacije.
StringUtils nam pruža više statičkih metoda za proveru praznine, na primer:
String str1 = null;
String str2 = "";
String str3 = " ";
String str4 = "abc";
System.out.println(StringUtils.isEmpty(str1));
System.out.println(StringUtils.isEmpty(str2));
System.out.println(StringUtils.isEmpty(str3));
System.out.println(StringUtils.isEmpty(str4));
System.out.println("=====");
System.out.println(StringUtils.isNotEmpty(str1));
System.out.println(StringUtils.isNotEmpty(str2));
System.out.println(StringUtils.isNotEmpty(str3));
System.out.println(StringUtils.isNotEmpty(str4));
System.out.println("=====");
System.out.println(StringUtils.isBlank(str1));
System.out.println(StringUtils.isBlank(str2));
System.out.println(StringUtils.isBlank(str3));
System.out.println(StringUtils.isBlank(str4));
System.out.println("=====");
System.out.println(StringUtils.isNotBlank(str1));
System.out.println(StringUtils.isNotBlank(str2));
System.out.println(StringUtils.isNotBlank(str3));
System.out.println(StringUtils.isNotBlank(str4));Rezultat izvršavanja:
true
true
false
false
=====
false
false
true
true
=====
true
true
true
false
=====
false
false
false
trueU primeru: isEmpty, isNotEmpty, isBlank i isNotBlank — ove 4 metode za proveru praznine možete koristiti prema stvarnoj situaciji.
Preporučuje se korišćenje metoda isBlank i isNotBlank, jer oni uzimaju u obzir i " ".
Deljenje niske
Deljenje niske čest je zahtev; ako se direktno koristi metod split klase String, može doći do izuzetka null pokazivača.
String str1 = null;
System.out.println(StringUtils.split(str1,","));
System.out.println(str1.split(","));Rezultat izvršavanja:
null
Exception in thread "main" java.lang.NullPointerException
\tat com.sue.jump.service.test1.UtilTest.main(UtilTest.java:21)Metod split klase StringUtils vraća null, dok metod split klase String prijavljuje izuzetak null pokazivača.
Provera da li je niska isključivo broj
Za datu nisku, da biste proverili da li je isključivo broj, možete koristiti metod isNumeric. Na primer:
String str1 = "123";
String str2 = "123q";
String str3 = "0.33";
System.out.println(StringUtils.isNumeric(str1));
System.out.println(StringUtils.isNumeric(str2));
System.out.println(StringUtils.isNumeric(str3));Rezultat izvršavanja:
true
false
falseSpajanje kolekcije u nisku
Ponekad sadržaj neke kolekcije treba da spojimo u jednu nisku, a zatim da ga ispišemo; tada možemo koristiti metod join. Na primer:
List<String> list = Lists.newArrayList("a", "b", "c");
List<Integer> list2 = Lists.newArrayList(1, 2, 3);
System.out.println(StringUtils.join(list, ","));
System.out.println(StringUtils.join(list2, " "));Rezultat izvršavanja:
a,b,c
1 2 3Druge metode
Ovde ćemo navesti još neke, dok ostale metode možete sami da proučite.
trim(String str): uklanja razmake sa početka i kraja niske.trimToEmpty(String str): uklanja razmake sa početka i kraja niske; ako je niska null, vraća praznu nisku.trimToNull(String str): uklanja razmake sa početka i kraja niske; ako je rezultat prazna niska, vraća null.equals(String str1, String str2): poredi da li su dve niske jednake.equalsIgnoreCase(String str1, String str2): poredi da li su dve niske jednake, zanemarujući velika i mala slova.startsWith(String str, String prefix): proverava da li niska počinje zadatim prefiksom.endsWith(String str, String suffix): proverava da li niska završava zadatim sufiksom.contains(String str, CharSequence seq): proverava da li niska sadrži zadati niz znakova.indexOf(String str, CharSequence seq): vraća indeks prvog pojavljivanja zadatog niza znakova u niski; ako nije pronađen, vraća -1.lastIndexOf(String str, CharSequence seq): vraća indeks poslednjeg pojavljivanja zadatog niza znakova u niski; ako nije pronađen, vraća -1.substring(String str, int start, int end): izdvaja podnisku u zadatom opsegu iz niske.replace(String str, String searchString, String replacement): zamenjuje sva pojavljivanja niske za pretragu u niski zadatom niskom za zamenu.replaceAll(String str, String regex, String replacement): pomoću regularnog izraza zamenjuje sva poklapanja u niski.join(Iterable<?> iterable, String separator): pomoću zadatog separatora spaja elemente iterabilnog objekta u jednu nisku.split(String str, String separator): pomoću zadatog separatora deli nisku u niz niski.capitalize(String str): pretvara prvi znak niske u veliko slovo.uncapitalize(String str): pretvara prvi znak niske u malo slovo.
