Обробка рядків за допомогою Apache Commons Lang 3

1. Огляд

Бібліотека Apache Commons Lang 3 забезпечує підтримку маніпулювання основними класами Java API. Ця підтримка включає методи обробки рядків, чисел, дат, паралельності, відображення об’єктів тощо.

На додаток до загального вступу до бібліотеки, цей посібник демонструє методи класу StringUtils, який використовується для маніпулювання екземплярами String .

2. Залежність Мавена

Для того, щоб використовувати бібліотеку Commons Lang 3, просто витягніть її з центрального сховища Maven, використовуючи таку залежність:

 org.apache.commons commons-lang3 3.5 

Останню версію цієї бібліотеки ви можете знайти тут.

3. StringUtils

Клас StringUtils надає методи безпечних для нуля операцій над рядками.

Багато методів цього класу мають відповідні методи, визначені в класі java.lang.String , які не є null -safe. Однак цей розділ натомість зосередиться на декількох методах, які не мають еквівалентів у класі String .

4. Метод containsAny

Метод containsAny перевіряє, чи містить заданий рядок будь-який символ із заданого набору символів. Цей набір символів можна передавати у вигляді рядка або символів- символів.

Наступний фрагмент коду демонструє використання двох перевантажених ароматів цього методу з перевіркою результатів:

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 підраховує, скільки разів символ або підрядок з'являється у даному рядку.

Нижче демонстрація цього методу, підтверджуючи , що «ж» з'являється чотири рази , і «кому» робить двічі в Струнний «Ласкаво просимо в 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 вже визначає методи перетворення всіх символів рядка у великі чи малі. У цьому підрозділі тільки ілюструє використання методів , які змінюють випадок рядки іншими способами, в тому числі swapCase , капіталізувати і uncapitalize .

Метод swapCase замінює регістр рядка, змінюючи великі регістри на малі та малі регістри на великі:

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 . Зворотний метод перебудовує всі символи в String , в тому порядку , зворотному, в той час як 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 () циркулярно зміщує символи рядка на кілька позицій. Наведений нижче фрагмент коду переміщує всі символи рядка “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.