Как удалить дубликаты пробелов (включая табуляции, новые строки, пробелы и т. Д.) В строке с помощью Java?
java
string
whitespace
безмозглый
источник
источник
\s+
но что означает 2 \ \?"\\"
представляет строку, состоящую из одного обратного слеша. Так что представлять\s+
вы пишите"\\s+"
.Вы можете использовать регулярное выражение
и
замените его на
$1
.Java-код:
Если в качестве входных данных
"foo\t\tbar "
вы получите в"foo\tbar "
качестве выходных данных,но если в качестве входных данных
"foo\t bar"
он останется неизменным, потому что в нем нет последовательных пробельных символов.Если вы рассматриваете все пробельные символы (пробел, вертикальная табуляция, горизонтальная табуляция, возврат каретки, перевод формы, новая строка) как пробел, то вы можете использовать следующее регулярное выражение для замены любого количества последовательных пробелов одним пробелом:
Но если вы хотите заменить два последовательных пробела одним пробелом, вы должны сделать:
источник
Попробуйте это - вы должны
import java.util.regex.*;
Где
string
ваша строка, на которой вам нужно удалить дубликаты пробеловисточник
привет самый быстрый (но не самый красивый способ) я нашел
это работает довольно быстро на Android в противоположность регулярному выражению
источник
источник
Хотя уже слишком поздно, я нашел лучшее решение (которое работает для меня), которое заменит все последовательные пробелы одного типа одним пробелом своего типа. То есть:
будет
Обратите внимание, что по-прежнему есть пробелы в начале и конце. Итак, мое полное решение:
Здесь
trim()
заменяет все начальные и конечные пустые строки на "".(\\s)
предназначен для захвата\\s
(то есть пробелов, таких как '', '\ n', '\ t') в группе # 1 .+
знак для совпадения 1 или более предшествующего токена. Таким образом,(\\s)+
могут быть последовательные символы (1 или более) среди любых одиночных пробелов ('', '\ n' или '\ t').$1
предназначен для замены совпадающих строк на строку группы # 1 (которая содержит только 1 символ пробела) соответствующего типа (то есть единственный символ пробела, который соответствует). Приведенное выше решение изменится так:будет
Я не нашел своего решения выше, поэтому разместил его.
источник
Если вы хотите избавиться от всех начальных и конечных лишних пробелов, то вы хотите сделать что-то вроде этого:
Затем вы можете удалить дубликаты, используя другие стратегии, перечисленные здесь:
источник
Вы также можете попробовать использовать String Tokeniser для любого пробела, табуляции, новой строки и всего. Простой способ
источник
Это может быть возможно в три этапа:
источник