Въведение в StringUtils
StringUtils е най-използваният клас на Apache Commons. Той съдържа различни помощни програми и методи, които помагат на разработчиците да избегнат писането на шаблонен or просто тромав code за основни операции.
Много от методите в класа StringUtils имат своите еквиваленти на java.lang.String , но за разлика от методите java.lang.String са защитени от нула. Това означава, че NullPointerException не се хвърля в най-неочаквания момент.
Apache Commons съдържа редица методи и ние ще разгледаме някои от най-често използваните.
Списък на методите на StringUtils:
празно е() | Проверява дали даден низ е празен |
равно на() | Сравнява низове |
сравни () | Сравнява низове |
индекс на() | Намиране на подниз в низ |
lastIndexOf() | Намиране на подниз в низ |
съдържа() | Проверява дали поднизът е в низ |
съдържаIgnoreCase() | Проверява за появата на подниз в низ, като пренебрегва главните и малки букви |
съдържа Any() | Проверява дали подниз се среща някъде в низ |
съдържаНяма() | Проверява дали подниз се среща някъде в низ |
съдържаСамо() | Проверява дали поднизът е в низ |
подниз() | Получаване на подниз |
разделяне () | Разделяне на низ на поднизове |
присъединяване() | конкатенирани поднизове |
Премахване() | Премахване на подниз |
замени() | Замяна на подниз |
countMatches() | Преброяване на съвпаденията |
StringUtils.isEmpty() и StringUtils.isBlank()
И двата метода се използват за проверка дали даден низ съдържа няHowъв текст. Те връщат true, ако низът наистина е празен. Освен това isBlank() също ще върне true , ако низът съдържа само интервали.
Те също имат свои собствени обратни методи: isNotEmpty() и isNotBlank() .
Нека да видим How можете да използвате isEmpty() заедно с неговия аналог java.lang.String.isEmpty() , Howто и 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");
}
Тук има три променливи от тип String . Единият сочи към null , вторият не е null , но няма съдържание (празен низ), а третият не е празен, но ще отпечата празен резултат.
Изпълнението на този code води до:
emptyValue is emptyValue
blankValue is blankValue
Exception in thread "main" java.lang.NullPointerException
Методът isEmpty() вграден в java.lang.String не е нулев безопасен . Лесно ще получите NullPointerException, ако се опитате да проверите дали е празен, защото извиквате метода на нулева препратка . Ще бъде необходимо да се провери предварително дали препратката е нула:
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");
}
Сега това води до:
emptyValue is emptyValue
blankValue is blankValue
И ако тестваме тези методи върхуnullString:
String nullValue = null;
if(StringUtils.isEmpty(nullValue)) {
System.out.println("nullValue is emptyValue");
}
if(StringUtils.isBlank(nullValue)) {
System.out.println("nullValue is blankValue");
}
Тогава получаваме:
nullValue is emptyValue
nullValue is blankValue
Методите StringUtils са безопасни за null и дават очаквания резултат, дори ако им се предаде null .
StringUtils.equals()
Този метод сравнява два низа и връща true , ако те са идентични or ако и двете препратки сочат към null , но имайте предвид, че този метод е чувствителен към главни и малки букви.
Да видим How работи:
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"));
Резултат:
true
false
false
true
false
За да сравните метода equals() от StringUtils с 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"));
Това ви връща към:
true
false
Exception in thread "main" java.lang.NullPointerException
Отново извикването на метод на нулева препратка води до NullPointerException и ще трябва да проверите дали референтната променлива е нулева , преди да я използвате.
StringUtils.compare()
Декларацията на този метод изглежда така:
public static int compare(final String str1, final String str2)
Този метод сравнява два низа лексикографски, Howто прави методът java.lang.String.compareTo() , като връща:
- 0 ако str1 е равно на str2 (or и двете са нула)
- Стойността е по-малка от 0, ако str1 е по-малко от str2
- Стойност, по-голяма от 0, ако str1 е по-голямо от str2
Лексикографският ред е редът на речника. Нека да видим How можем да използваме това в нашата програма:
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"));
Получаваме:
0
-1
1
32
0
Забележка: Нулева стойност се счита за по-малка от ненулева стойност . Две нулеви стойности се считат за равни.
Проверка дали даден низ съдържа друг подниз
За да направите това, StringUtils има 5 метода:
- съдържа()
- съдържаIgnoreCase()
- съдържа Any()
- съдържаНяма()
- съдържаСамо()
Методът съдържа() връща true or false в зависимост от това дали последователността за търсене се съдържа в друга последователност or не.
Ако null се предаде на такъв метод , той ще върне false . Ако се подаде не- null , методът просто ще извика java.lang.String.indexOf(String str) на подадения обект.
Примери:
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"));
Методът е чувствителен към главни и малки букви, така че последното извикване също ще върне false :
false
true
false
false
Методът containsAny() връща true, ако низът, предаден като първи аргумент, съдържа поне един от поднизовете, предадени в 2-N аргумента.
Пример:
String value = "CodeGym is cool";
System.out.println(StringUtils.containsAny(value, "cool", "c00l", "bro", "hello"));
Ще покаже:
true
Този метод също е чувствителен към главни и малки букви.
съдържа метод None().
Когато трябва да проверите дали определен низ не съдържа нищо от списъка, можете да използвате метода containsNone() . Първият параметър е низ, а следващите параметри са низове, които не трябва да бъдат в целевия приемник.
Пример:
String s = "CodeGym is cool";
System.out.println(StringUtils.containsNone(s, 'g', 'a'));
Конзолен изход:
false
Работа с поднизове
Работата с поднизове е подобна на работата с методите на класа String :
substring(String str, int start)
substring (String str, int start, int end)
Тези методи връщат подниз от низа str . Низът е даден от два индекса: начало и край . И Howто обикновено в Java, последният знак от диапазона е end-1 . Какво е предимството на тези методи?
Ако подадете null на такъв метод , той просто ще върне null , instead of да хвърли изключение. Тези методи поддържат отрицателни стойности на индекса. В този случай низът се счита за затворен цикъл. Последният знак е последван от първия и т.н.
Нека да видим How можем да го използваме:
System.out.println(StringUtils.substring("lets java", 2, 6));
System.out.println(StringUtils.substring("lets java", -8));
System.out.println(StringUtils.substring(null, 3));
Изпълнението на горния code ни дава:
ts j
ets java
null
StringUtils.split()
Метод, който ви позволява да разделите низ на поднизове с помощта на специален разделителен знак. Ако има такъв в целевия низ, тогава методът ще върне масив от поднизове. Ако няма знак, ще бъде върнат празен масив. Е, ако null се предаде на метода , той ще върне null . Нека да разгледаме този code и How работи методът:
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("", '.')));
Резултат:
[Address, City, State, Zip, Phone, Email, Password]
null
[]
StringUtils.join()
Методът join() ви позволява да свържете масив от низове в един низ. В същото време към него може да бъде подаден специален разделителен знак, който ще бъде добавен между поднизовете в резултантния низ. И ако null се предаде на метода , тогава той ще върне null .
Този метод е точно обратното на метода split() . Нека да разгледаме този прост пример:
String myData = "Address, City, State, Zip, Phone, Email, Password";
String[] myString = StringUtils.split(myData, ',');
System.out.println(StringUtils.join(myString, '-'));
Изпълнението на горния code ни дава:
Address- City- State- Zip- Phone- Email- Password
StringUtils.replace()
Търси низ в низ, намира го, ако съществува, и заменя всички негови срещания с нов низ.
Декларацията на този метод изглежда така:
public static String replace(final String text, final String searchString, final String replacement)
Ако търсеният низ не бъде намерен в текста, нищо няма да се случи и текстът ще остане същият. Следвайки същата логика, ако текстът е null , този метод връща null . Ако търсите нулев низ or заменяте подниз с null , тогава методът ще върне оригиналния низ.
Нека опитаме този метод:
String value = "CodeGym is the best";
System.out.println(StringUtils.replace(value, "best", "cool"));
Резултат:
CodeGym is the cool
GO TO FULL VERSION