Обработка строк с помощью Apache Commons Lang 3

Обработка строк с помощью Apache Commons Lang 3

1. обзор

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

Помимо общего введения в библиотеку, это руководство демонстрирует методы классаStringUtils, который используется для управления экземплярамиString.

2. Maven Dependency

Чтобы использовать библиотеку Commons Lang 3, просто извлеките ее из центрального репозитория Maven, используя следующую зависимость:


    org.apache.commons
    commons-lang3
    3.5

Вы можете найти последнюю версию этой библиотекиhere.

3. StringUtilsс

КлассStringUtils предоставляет методы дляnull-безопасных операций со строками.

Многие методы этого класса имеют соответствующие методы, определенные в классеjava.lang.String, которые не являютсяnull-безопасными. Однако в этом разделе мы сосредоточимся на нескольких методах, не имеющих эквивалентов в классеString.

4. МетодcontainsAny

МетодcontainsAny проверяет, содержит ли данныйString какой-либо символ из данного набора символов. Этот набор символов может быть передан в виде переменныхString илиchar.

Следующий фрагмент кода демонстрирует использование двух перегруженных разновидностей этого метода с проверкой результата:

String string = "example.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 проверяет, содержит ли данныйString другойString, без учета регистра.

Следующий фрагмент кода проверяет, чтоString “example.com” содержит“example”, когда верхний и нижний регистр игнорируются:

String string = "example.com";
boolean contained = StringUtils.containsIgnoreCase(string, "example");

assertTrue(contained);

6. МетодcountMatches

МетодcounterMatches подсчитывает, сколько раз символ или подстрока появляется в заданномString.

Ниже приведена демонстрация этого метода, подтверждающая, что‘w' появляется четыре раза, а“com” - дважды вString“welcome to www.example.com”:

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

assertEquals(4, charNum);
assertEquals(2, stringNum);

7. Добавление и добавление метода

МетодыappendIfMissing иappendIfMissingIgnoreCase добавляют суффикс к концу заданногоString, если он еще не заканчивается ни одним из переданных суффиксов с учетом регистра и нечувствительностью соответственно.

Точно так же методыprependIfMissing иprependIfMissingIgnoreCase добавляют префикс к началу заданногоString, если он не начинается с любого из переданных префиксов.

В следующем примере методыappendIfMissing иprependIfMissing используются для добавления суффикса и префикса кString “example.com” без повторения этих аффиксов:

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

assertEquals("example.com", stringWithSuffix);
assertEquals("www.example.com", stringWithPrefix);

8. Метод смены регистра

КлассString уже определяет методы для преобразования всех символовString в верхний или нижний регистр. В этом подразделе только показано использование методов, изменяющих регистр aString другими способами, включаяswapCase,capitalize иuncapitalize.

МетодswapCase меняет местами регистрString,, изменяющий верхний регистр на нижний и нижний регистр на верхний:

String originalString = "example.COM";
String swappedString = StringUtils.swapCase(originalString);

assertEquals("example.com", swappedString);

Методcapitalize преобразует первый символ заданногоString в верхний регистр, оставляя все остальные символы без изменений:

String originalString = "example";
String capitalizedString = StringUtils.capitalize(originalString);

assertEquals("example", capitalizedString);

Методuncapitalize преобразует первый символ данногоString в нижний регистр, оставляя все оставшиеся символы без изменений:

String originalString = "example";
String uncapitalizedString = StringUtils.uncapitalize(originalString);

assertEquals("example", uncapitalizedString);

9. Метод реверсирования

КлассStringUtils определяет два метода переворота строк:reverse иreverseDelimited. Методreverse переупорядочивает все символыString в обратном порядке, а методreverseDelimited переупорядочивает группы символов, разделенные указанным разделителем.

Следующий фрагмент кода переворачивает строку“example” и проверяет результат:

String originalString = "example";
String reversedString = StringUtils.reverse(originalString);

assertEquals("gnudleab", reversedString);

В методеreverseDelimited символы меняются местами группами, а не по отдельности:

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

assertEquals("com.example.www", reversedString);

10. Методrotate()

Методrotate() циклически сдвигает символы aString на ряд позиций. Приведенный ниже фрагмент кода перемещает все символыString “example” на четыре позиции вправо и проверяет результат:

String originalString = "example";
String rotatedString = StringUtils.rotate(originalString, 4);

assertEquals("dungbael", rotatedString);

11. Методdifference

Методdifference сравнивает две строки, возвращая остаток от второгоString,, начиная с позиции, в которой она отличается от первой. Следующий фрагмент кода сравнивает дваStrings: “example Tutorials” и“example Courses” в обоих направлениях и проверяет результат:

String tutorials = "example Tutorials";
String courses = "example 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.

Как всегда, реализацию всех приведенных выше примеров и фрагментов кода можно найти вthe GitHub project.