Преобразование строки в заглавные буквы в Java

Научитесь преобразовывать строку в формат 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 и создавать собственное решение, вручную разделяя и делая заглавными каждое слово по отдельности.

Приятного обучения!!

Исходный код на Github

Прокрутить вверх