StringUtils

StringUtils от org.apache.commons.lang. Не пользовались, тогда пора !!
В этой статье мы расмотрим польщу от использования библиотеки StringUtils и маленький трик как избавиться от NullPointerException при проверки обьектов String. Для наглядности давайте расмотрим примеры кода:
public class StringUtilsExample { 
protected Dog dog;
class Dog{
String name;
public Dog(String name){
this.name=name;
}
}

public void createDog(String name){
this.dog = new Dog(name);
}

public static void main(String[] arg){
StringUtilsExample exampleFirst = new StringUtilsExample();
exampleFirst.createDog("Rrr");
if(exampleFirst.dog.name.equals("Rrr")){
System.out.println("true");
}

StringUtilsExample exampleSecond = new StringUtilsExample();
exampleSecond.createDog(null);
if(exampleSecond.dog.name.equals("Rrr")){ //NullPointerExecption
System.out.println("true");
}

if(exampleSecond.dog.name !=null &&exampleSecond.dog.name.equals("Rrr")){ //all is ok
System.out.println("true");
}

if("Rrr".equals(exampleSecond.dog.name) ){ //all is ok
System.out.println("true");
}
}
}

Мы видим что у нас в примеры есть место которое выбрасывает ошибку NullPointerException. Ну ничего в следуещем примере мы добавили еще одну проверку на NULL и все кажется нормально.

Но в третем примере мы показили что можна избавиться от лишней проверки на NULL и поставить при проверке на первое место “Rrr” и тогда код короче и более приятен для чтения. 

Я советую всем взять этот пример на заметку. Конечно мы не проверяли на NULL обьект dog нашего экземпляра класса, но для примера это не важно. А Вы не забывайте про все места которые могут себя вести по разному))).

А теперь вернемся к StringUtils. Представте ситуацию что вы берете чето с БД и должны проверить не пустое ли там значение. На быструю руку мы пишем такой код

StringUtilsExample exampleFirst = new StringUtilsExample(); exampleFirst.createDog(" "); if(exampleFirst.dog.name.isEmpty()){ System.out.println("true"); }

Но оказывается БД у нас как всегда битая и там вместо пустого значения мы получаем пробелы ”  “. И наша проверка не вернет true так как isEmpty вернет что там чето есть. Для таких случаев и нужна нам библиотечка StringUtils. С ее использованием мы получаем следующий код 

if(StringUtils.isBlank(exampleFirst.dog.name)){ System.out.println("true"); } 

И тогда все нормально. За нас сделали проверку на ” “. Одно из преимуществ что эта библиотечка делает работу безапасной на NULL. У нее много преимуществ. Некоторые методы я приведу сдесь:

  • IsEmpty/IsBlank – checks if a String contains text
  • Trim/Strip – removes leading and trailing whitespace
  • Equals – compares two strings null-safe
  • startsWith – check if a String starts with a prefix null-safe
  • endsWith – check if a String ends with a suffix null-safe
  • IndexOf/LastIndexOf/Contains – null-safe index-of checks
  • IndexOfAny/LastIndexOfAny/IndexOfAnyBut/LastIndexOfAnyBut – index-of any of a set of Strings
  • ContainsOnly/ContainsNone/ContainsAny – does String contains only/none/any of these characters
  • Substring/Left/Right/Mid – null-safe substring extractions
  • SubstringBefore/SubstringAfter/SubstringBetween – substring extraction relative to other strings
  • Split/Join – splits a String into an array of substrings and vice versa
  • Remove/Delete – removes part of a String
  • Replace/Overlay – Searches a String and replaces one String with another
  • Chomp/Chop – removes the last part of a String
  • LeftPad/RightPad/Center/Repeat – pads a String
  • UpperCase/LowerCase/SwapCase/Capitalize/Uncapitalize – changes the case of a String
  • CountMatches – counts the number of occurrences of one String in another
  • IsAlpha/IsNumeric/IsWhitespace/IsAsciiPrintable – checks the characters in a String
  • DefaultString – protects against a null input String
  • Reverse/ReverseDelimited – reverses a String
  • Abbreviate – abbreviates a string using ellipsis
  • Difference – compares Strings and reports on their differences
  • LevensteinDistance – the number of changes needed to change one String into another

Это наиболее часто встречаемые в использовании. Если Вам нужно больше информации все можно найти в doc. 

И в заключение. Знание библиотек делает Вашу работу и код более чистыми и приятными для чтения

Please follow and like us:

Leave a Comment