Обработка на низове с Apache Commons Lang 3

1. Общ преглед

Библиотеката Apache Commons Lang 3 осигурява поддръжка за манипулиране на основните класове на Java API. Тази поддръжка включва методи за обработка на низове, числа, дати, паралелност, отражение на обекти и др.

В допълнение към предоставянето на общо въведение в библиотеката, този урок демонстрира методи на класа StringUtils, който се използва за манипулиране на екземпляри на String .

2. Зависимост на Maven

За да използвате библиотеката на Commons Lang 3, просто я издърпайте от централното хранилище на Maven, като използвате следната зависимост:

 org.apache.commons commons-lang3 3.5 

Можете да намерите най-новата версия на тази библиотека тук.

3. StringUtils

Класът StringUtils предоставя методи за нулево- безопасни операции върху низове.

Много методи от този клас имат съответни методи, дефинирани в клас java.lang.String , които не са null -safe. Вместо това този раздел ще се съсредоточи върху няколко метода, които нямат еквиваленти в класа String .

4. containsAny Метод

Методът containsAny проверява дали даден низ съдържа някакъв символ в дадения набор от символи. Този набор от символи може да бъде предаден под формата на String или char varargs.

Следният фрагмент на кода демонстрира използването на два претоварени вкуса на този метод с проверка на резултата:

String string = "baeldung.com"; boolean contained1 = StringUtils.containsAny(string, 'a', 'b', 'c'); boolean contained2 = StringUtils.containsAny(string, 'x', 'y', 'z'); boolean contained3 = StringUtils.containsAny(string, "abc"); boolean contained4 = StringUtils.containsAny(string, "xyz"); assertTrue(contained1); assertFalse(contained2); assertTrue(contained3); assertFalse(contained4);

5. containsIgnoreCase Метод

Методът containsIgnoreCase проверява дали даден низ съдържа друг низ в случай на нечувствителност към регистъра.

Следният фрагмент на код потвърждава, че низът „baeldung.com“ съдържа „BAELDUNG“, когато се игнорират главни и малки букви:

String string = "baeldung.com"; boolean contained = StringUtils.containsIgnoreCase(string, "BAELDUNG"); assertTrue(contained);

6. countMatches Метод

Методът counterMatches отчита колко пъти се появява знак или подниз в даден низ.

По-долу е демонстрация на този метод, потвърждаваща, че „w“ се появява четири пъти и „com“ прави два пъти в String „добре дошли в www.baeldung.com“ :

String string = "welcome to www.baeldung.com"; int charNum = StringUtils.countMatches(string, 'w'); int stringNum = StringUtils.countMatches(string, "com"); assertEquals(4, charNum); assertEquals(2, stringNum);

7. Метод за добавяне и добавяне

Методите appendIfMissing и appendIfMissingIgnoreCase добавят суфикс в края на даден низ, ако той вече не завършва с нито една от подадените суфикси, съответно с чувствителност към малки и големи букви.

По същия начин методите prependIfMissing и prependIfMissingIgnoreCase добавят префикс към началото на даден низ, ако той не започва с нито един от подадените префикси.

В следващия пример методите appendIfMissing и prependIfMissing се използват за добавяне на суфикс и префикс към низа „baeldung.com“, без тези афикси да се повтарят:

String string = "baeldung.com"; String stringWithSuffix = StringUtils.appendIfMissing(string, ".com"); String stringWithPrefix = StringUtils.prependIfMissing(string, "www."); assertEquals("baeldung.com", stringWithSuffix); assertEquals("www.baeldung.com", stringWithPrefix);

8. Метод за промяна на случая

Класът String вече дефинира методи за конвертиране на всички символи на String в главни или малки букви. Този подраздел само илюстрира използването на методи за промяна на регистъра на String по други начини, включително swapCase , изписване с главни букви и премахване на главни букви .

Методът swapCase сменя случая на String, променяйки главни в малки и малки букви в главни:

String originalString = "baeldung.COM"; String swappedString = StringUtils.swapCase(originalString); assertEquals("BAELDUNG.com", swappedString);

Методът с главни букви преобразува първия символ от даден низ в главни букви, като всички останали знаци остават непроменени:

String originalString = "baeldung"; String capitalizedString = StringUtils.capitalize(originalString); assertEquals("Baeldung", capitalizedString);

Методът uncapitalize преобразува първия знак от дадения низ в малки букви, оставяйки всички останали знаци непроменени:

String originalString = "Baeldung"; String uncapitalizedString = StringUtils.uncapitalize(originalString); assertEquals("baeldung", uncapitalizedString);

9. Метод на заден ход

Класът StringUtils дефинира два метода за обръщане на низове: reverse и reverseDelimited . В обратна метод пренарежда всички символи на низ от порядъка обратното, докато reverseDelimited метод пренарежда групи от символи, разделени от определен разделител.

Следният фрагмент на код обръща низа „baeldung“ и потвърждава резултата:

String originalString = "baeldung"; String reversedString = StringUtils.reverse(originalString); assertEquals("gnudleab", reversedString);

С метода reverseDelimited символите се обръщат в групи вместо поотделно:

String originalString = "www.baeldung.com"; String reversedString = StringUtils.reverseDelimited(originalString, '.'); assertEquals("com.baeldung.www", reversedString);

10 върти () Метод

Методът rotate () циркулярно измества символите на String на няколко позиции. Кодовият фрагмент по-долу премества всички знаци от низа „baeldung“ четири позиции вдясно и проверява резултата:

String originalString = "baeldung"; String rotatedString = StringUtils.rotate(originalString, 4); assertEquals("dungbael", rotatedString);

11. Различен метод

Методът на разликата сравнява два низа, връщайки остатъка от втория низ, започвайки от позицията, в която е различен от първия. Следният кодов фрагмент сравнява два низа: „Уроци по Baeldung“ и „Курсове по Baeldung“ в двете посоки и потвърждава резултата:

String tutorials = "Baeldung Tutorials"; String courses = "Baeldung Courses"; String diff1 = StringUtils.difference(tutorials, courses); String diff2 = StringUtils.difference(courses, tutorials); assertEquals("Courses", diff1); assertEquals("Tutorials", diff2);

12. Заключение

Този урок въвежда обработка на низове в Apache Commons Lang 3 и разглежда основните API, които можем да използваме от класа на библиотеката StringUtils .

Както винаги, изпълнението на всички примери и кодови фрагменти, дадени по-горе, може да бъде намерено в проекта GitHub.