Обработка строк с помощью 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.