Научитесь преобразовывать строку в формат Title Case в Java. Мы будем использовать API Apache commons WordUtils.capitalizeFully() и вручную разделять и добавлять слова.
1. Использование WordUtils
Это самое простое и понятное решение. Apache commons-text предоставляет класс WordUtils, содержащий служебные методы для выполнения операций со словами строки Java.
1.1 Зависимость Maven
Начнем с включения последней версии библиотеки в проект.
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-text</artifactId><version>1.4</version></dependency>
1.2 Использование WordUtils.capitalizeFully() для преобразования заглавных букв
Метод capitalizeFully() преобразует все слова, разделенные пробелами в строке, в заглавные слова. В результирующей строке каждое слово состоит из символа заглавной буквы и затем серии строчных символов.
Входная строка null возвращает null.
String string = "how TO Do iN JAVA";String capitalizedString = WordUtils.capitalizeFully(string);Assertions.assertEquals("How To Do In Java", capitalizedString);
1.3. Написание заглавных букв в строке с разделителями
Если строка содержит несколько разделителей, которые нам нужны для разделения слов, мы можем передать разделители в качестве второго аргумента метода.
Обратите внимание, что capitalizeFully() не удаляет разделители из строки результата, а использует их только для токенизации строки.
String string = "how-TO Do$iN JAVA";String capitalizedString = WordUtils.capitalizeFully(string, new char[]{' ', '-', '$'});Assertions.assertEquals("How-To Do$In Java", capitalizedString);
2. Использование String.split() и StringBuffer
Другое решение для заглавных букв в строке — вручную разбить строку с помощью пробела(или других разделителей) и добавить отдельные токены после заглавных букв. Процесс заглавных букв токена выглядит следующим образом:
- Преобразовать первый символ в верхний регистр
- Преобразовать остальную часть строки в нижний регистр
- Добавьте результат в StringBuffer, после чего поставьте пробел(« «) или разделитель
- Верните строку результата
public static String titleCase(String inputString) {if(StringUtils.isBlank(inputString)) {return "";}if(StringUtils.length(inputString) == 1) {return inputString.toUpperCase();}StringBuffer resultPlaceHolder = new StringBuffer(inputString.length());Stream.of(inputString.split(" ")).forEach(stringPart -> {if(stringPart.length() > 1) {resultPlaceHolder.append(stringPart.substring(0, 1).toUpperCase()).append(stringPart.substring(1).toLowerCase());} else {resultPlaceHolder.append(stringPart.toUpperCase());}resultPlaceHolder.append(" ");});return StringUtils.trim(resultPlaceHolder.toString());}
Давайте проверим функцию titleCase() с несколькими строками:
Assertions.assertEquals("Null", titleCase(null));Assertions.assertEquals("", titleCase(""));Assertions.assertEquals("How To Do In Java", titleCase("HOW to DO IN jAVA"));Assertions.assertEquals("How To Do In Java", titleCase("how to do in java"));
3. Заключение
В этом коротком руководстве по строкам Java мы научились преобразовывать слова строки в заглавные буквы с помощью класса WordUtils и создавать собственное решение, вручную разделяя и делая заглавными каждое слово по отдельности.
Приятного обучения!!