Вопрос-ответ

Removing whitespace from strings in Java

Удаление пробелов из строк в Java

У меня есть строка, подобная этой:

mysz = "name=john age=13 year=2001";

Я хочу удалить пробелы в строке. Я пытался trim() но это удаляет только пробелы до и после всей строки. Я тоже пробовал, replaceAll("\\W", "") но затем = также удаляется.

Как я могу получить строку с помощью:

mysz2 = "name=johnage=13year=2001"
Переведено автоматически
Ответ 1

st.replaceAll("\\s+","") удаляет все пробелы и невидимые символы (например, табуляцию, \n).


st.replaceAll("\\s+","") и st.replaceAll("\\s","") дают тот же результат.

Второе регулярное выражение выполняется на 20% быстрее первого, но по мере увеличения количества последовательных пробелов первое работает лучше, чем второе.


Присваивание значения переменной, если оно не используется напрямую:

st = st.replaceAll("\\s+","")
Ответ 2
replaceAll("\\s","")

\w = Все, что является символом word

\W = Все, что не является символом word (включая знаки препинания и т.д.)

\s = Все, что является символом пробела (включая пробел, символы табуляции и т.д.)

\S = Все, что не является символом пробела (включая как буквы, так и цифры, а также знаки препинания и т.д.)

(Редактировать: как указывалось, вам нужно экранировать обратную косую черту, если вы хотите \s получить доступ к движку регулярных выражений, что приводит к \\s.)

Ответ 3

Наиболее правильный ответ на вопрос:

String mysz2 = mysz.replaceAll("\\s","");

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

(Опытные разработчики Java могут сказать: "конечно, на самом деле вы не можете изменить строку", но целевая аудитория этого вопроса вполне может этого не знать.)

Ответ 4

Одним из способов обработки манипуляций со строками является StringUtils из Apache commons.

String withoutWhitespace = StringUtils.deleteWhitespace(whitespaces);

Вы можете найти это здесь.
commons-lang включает в себя гораздо больше и хорошо поддерживается.

java