Узнайте, как удалить лишние пробелы между словами из строки в 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+».
- \s соответствует пробелу, табуляции, новой строке, возврату каретки, переводу страницы или вертикальной табуляции.
- + говорит об одном или нескольких случаях.
Обратите внимание, что этот метод НЕ обрезает строку. Это означает, что в начале и конце строки может быть один пробел, если исходная строка имеет такие пробелы в начале или конце.
// 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