1. Обзор
Библиотека Apache Commons Lang 3 обеспечивает поддержку манипулирования основными классами API Java. Эта поддержка включает методы для обработки строк, чисел, дат, параллелизма, отражения объектов и многого другого.
Помимо общего введения в библиотеку, в этом руководстве демонстрируются методы класса StringUtils
, которые используются для манипулирования экземплярами String .
2. Зависимость от Maven
Чтобы использовать библиотеку Commons Lang 3, просто извлеките ее из центрального репозитория Maven, используя следующую зависимость:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
Вы можете найти последнюю версию этой библиотеки здесь .
3. Строковые утилиты
Класс StringUtils
предоставляет методы для нулевых
операций со строками.
Многие методы этого класса имеют соответствующие методы, определенные в классе java.lang.String
, которые не являются нулевыми
. Однако в этом разделе вместо этого основное внимание будет уделено нескольким методам, не имеющим эквивалентов в классе String
.
4. Метод containsAny
Метод containsAny
проверяет, содержит ли заданная строка
какой-либо символ из заданного набора символов. Этот набор символов может быть передан в виде String
или char
varargs.
Следующий фрагмент кода демонстрирует использование двух перегруженных разновидностей этого метода с проверкой результата:
String string = "foreach.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
проверяет, содержит ли данная строка
другую строку
без учета регистра.
Следующий фрагмент кода проверяет, что строка «foreach.com»
содержит «FOREACH»
, когда верхний и нижний регистр игнорируются:
String string = "foreach.com";
boolean contained = StringUtils.containsIgnoreCase(string, "FOREACH");
assertTrue(contained);
6. Метод countMatches
Метод counterMatches
подсчитывает, сколько раз символ или подстрока появляется в заданной строке.
Ниже приведена демонстрация этого метода, подтверждающая, что «w»
встречается четыре раза, а «com»
— дважды в строке «добро пожаловать на www.foreach.com
»
:
String string = "welcome to www.foreach.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
используются для добавления суффикса и префикса к строке «foreach.com»
без повторения этих аффиксов:
String string = "foreach.com";
String stringWithSuffix = StringUtils.appendIfMissing(string, ".com");
String stringWithPrefix = StringUtils.prependIfMissing(string, "www.");
assertEquals("foreach.com", stringWithSuffix);
assertEquals("www.foreach.com", stringWithPrefix);
8. Метод изменения регистра
Класс String
уже определяет методы для преобразования всех символов строки
в верхний или нижний регистр. В этом подразделе показано только использование методов, изменяющих регистр String
другими способами, включая swapCase
, capitalize
и uncapitalize
.
Метод swapCase
меняет регистр строки,
изменяя верхний регистр на нижний и нижний на верхний:
String originalString = "foreach.COM";
String swappedString = StringUtils.swapCase(originalString);
assertEquals("FOREACH.com", swappedString);
Метод capitalize
преобразует первый символ заданной строки
в верхний регистр, оставляя все остальные символы без изменений:
String originalString = "foreach";
String capitalizedString = StringUtils.capitalize(originalString);
assertEquals("ForEach", capitalizedString);
Метод uncapitalize
преобразует первый символ заданной строки
в нижний регистр, оставляя все остальные символы без изменений:
String originalString = "ForEach";
String uncapitalizedString = StringUtils.uncapitalize(originalString);
assertEquals("foreach", uncapitalizedString);
9. Реверсивный метод
Класс StringUtils
определяет два метода обращения строк: reverse
и reverseDelimited
. Метод reverse
переставляет все символы строки
в обратном порядке, а метод reverseDelimited
переупорядочивает группы символов, разделенные указанным разделителем.
Следующий фрагмент кода переворачивает строку «foreach»
и проверяет результат:
String originalString = "foreach";
String reversedString = StringUtils.reverse(originalString);
assertEquals("gnudleab", reversedString);
При использовании метода reverseDelimited
символы меняются местами группами, а не по отдельности:
String originalString = "www.foreach.com";
String reversedString = StringUtils.reverseDelimited(originalString, '.');
assertEquals("com.foreach.www", reversedString);
10. Метод rotate ()
Метод rotate()
циклически сдвигает символы строки
на несколько позиций. Фрагмент кода ниже перемещает все символы строки «foreach»
на четыре позиции вправо и проверяет результат:
String originalString = "foreach";
String rotatedString = StringUtils.rotate(originalString, 4);
assertEquals("dungbael", rotatedString);
11. Метод разницы
Метод разницы
сравнивает две строки, возвращая остаток второй строки,
начиная с позиции, в которой она отличается от первой. Следующий фрагмент кода сравнивает две строки: «ForEach Tutorials»
и «ForEach Courses»
в обоих направлениях и проверяет результат:
String tutorials = "ForEach Tutorials";
String courses = "ForEach 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 .