Java – Нормализация лишних пробелов в строке

Узнайте, как удалить лишние пробелы между словами из строки в Java. Приведены 3 примера замены множественных пробелов одним пробелом с помощью регулярного выражения, StringBuiffer и класса Apache Commons StringUtils.

1. Использование StringUtils от Apache Common

Такой подход с использованием StringUtils.normalizeSpace() наиболее удобен для чтения и должен быть предпочтительным способом удаления нежелательных пробелов между словами.

Эта функция возвращает строку аргумента с пробелами, нормализованную в два этапа, а именно:

  • использование trim(String) для удаления начальных и конечных пробелов, а затем
  • замена последовательностей пробельных символов на один пробел

1.1 Зависимость Maven

Добавьте последнюю версию commons-lang3 из репозитория Maven.

<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.12.0</version></dependency>

1.2. Программа Java для удаления лишних пробелов

// uneven spaces between wordsString blogName = "how to do in java . com";String nameWithProperSpacing = StringUtils.normalizeSpace( blogName );System.out.println( nameWithProperSpacing );

Вывод программы.

how to do in java . com

См. также: Удаление всех пробелов из строки в Java

2. Использование регулярных выражений

Использование регулярного выражения для замены двух или более пробелов и невидимых символов одним пробелом также является хорошим решением.

Мы используем шаблон регулярного выражения «\\s+».

  1. \s соответствует пробелу, табуляции, новой строке, возврату каретки, переводу страницы или вертикальной табуляции.
  2. + говорит об одном или нескольких случаях.

Обратите внимание, что этот метод НЕ обрезает строку. Это означает, что в начале и конце строки может быть один пробел, если исходная строка имеет такие пробелы в начале или конце.

// uneven spaces between wordsString blogName = "how to do in java . com";String nameWithProperSpacing = blogName.replaceAll("\\s+", " ");System.out.println( nameWithProperSpacing );

Вывод программы.

how to do in java . com

См. также: Удаление начальных пробелов и Удаление конечных пробелов из строки

3. Использование StringBuffer

StringBuiffer также может помочь нам избавиться от неравномерно расположенных строк. Это полностью программный подход, и он может не подходить для больших строк.

Обратите внимание, что подобно примеру с регулярным выражением, этот метод также может оставлять начальные и конечные пробелы. Поэтому не забудьте обрезать строку после удаления лишних пробелов между словами в строке параметров.

// uneven spaces between wordsString blogName = "how to do in java . com";StringTokenizer st = new StringTokenizer(blogName, " ");StringBuffer sb = new StringBuffer();while(st.hasMoreElements()){sb.append(st.nextElement()).append(" ");}String nameWithProperSpacing = sb.toString();System.out.println( nameWithProperSpacing );//trim leading and trailing white spacesnameWithProperSpacing = nameWithProperSpacing.trim();System.out.println( nameWithProperSpacing );

Вывод программы.

how to do in java . com

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

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