У меня есть такая строка:
mysz = "name=john age=13 year=2001";
Я хочу удалить пробелы в строке. Я пытался, trim()
но это удаляет только пробелы до и после всей строки. Я также пытался, replaceAll("\\W", "")
но затем =
также удаляется.
Как я могу получить строку с:
mysz2 = "name=johnage=13year=2001"
java
whitespace
zyamat
источник
источник
\\W
означает, что все не слова см. download.oracle.com/javase/6/docs/api/java/util/regex/…Ответы:
st.replaceAll("\\s+","")
удаляет все пробелы и невидимые символы (например, табуляция\n
).st.replaceAll("\\s+","")
иst.replaceAll("\\s","")
дать тот же результат.Второе регулярное выражение на 20% быстрее первого, но по мере увеличения числа последовательных пробелов первое работает лучше, чем второе.
Присвойте значение переменной, если она не используется напрямую:
источник
\w
= Все, что является символом слова\W
= Все, что не является символом слова (включая знаки препинания и т. Д.)\s
= Все, что является пробелом (включая пробел, символы табуляции и т. Д.)\S
= Все, что не является пробелом (включая буквы и цифры, а также знаки препинания и т. Д.)(Редактировать: как указано, вам нужно избежать обратной косой черты, если вы хотите
\s
получить движок регулярных выражений, в результате\\s
.)источник
Самый правильный ответ на вопрос:
Я просто адаптировал этот код из других ответов. Я публикую его, потому что, помимо того, что он является именно тем, что запрашивается вопросом, он также демонстрирует, что результат возвращается в виде новой строки, исходная строка не изменяется, как подразумевают некоторые ответы.
(Опытные Java-разработчики могут сказать: «Конечно, вы не можете изменить строку», но целевая аудитория по этому вопросу может и не знать об этом.)
источник
S
но не перезаписывает строку, на которуюS
указывает.Как насчет того
replaceAll("\\s", "")
. Обратитесь сюда .источник
Одним из способов обработки строковых манипуляций является StringUtils из общего достояния Apache.
Вы можете найти это здесь . commons-lang включает в себя намного больше и хорошо поддерживается.
источник
Если вам также нужно удалить неразрывные пробелы, вы можете обновить код следующим образом:
источник
" ab c "
Если вы предпочитаете вспомогательные классы регулярным выражениям, есть метод trimAllWhitespace (String) в StringUtils в Spring Framework.
источник
Вы уже получили правильный ответ от Gursel Koca, но я считаю, что есть хороший шанс, что это не то, что вы действительно хотите сделать. Как насчет парсинга значений ключа?
источник
Вы должны использовать
вместо:
Таким образом, он будет работать с более чем одним пробелом между каждой строкой. Знак + в приведенном выше регулярном выражении означает «один или несколько \ s»
источник
replaceAll
повторяется до тех пор, пока шаблон не совпадет ни с одной частью строки.+
может сделать его немного более дружественным к процессору, потому что последовательный пробел обрабатывается в одной операции замены, но это единственное отличие в этом случае. Это действительноAll
, а не то,+
что заменяет непоследовательный пробел в строке.Самый простой способ сделать это - использовать
org.apache.commons.lang3.StringUtils
классcommons-lang3
библиотеки, например, "commons-lang3-3.1.jar
".Используйте статический метод "
StringUtils.deleteWhitespace(String str)
" в вашей входной строке, и он вернет вам строку после удаления всех пробелов из нее. Я попробовал ваш пример строки "name=john age=13 year=2001
", и он вернул мне именно ту строку, которую вы хотели - "name=johnage=13year=2001
". Надеюсь это поможет.источник
Вы можете сделать это так просто,
источник
источник
// он отлично работает с любыми пробелами * не забывайте пробел в sting b
источник
\W
означает «не слово символ». Шаблон для пробельных символов есть\s
. Это хорошо задокументировано в шаблоне Javadoc .источник
В Java мы можем сделать следующую операцию:
Для этого вам необходимо импортировать следующие пакеты в вашу программу:
Я надеюсь, что это поможет вам.
источник
Использование Pattern And Matcher более динамично.
источник
использование
mysz.replaceAll("\\s+","");
источник
Используйте apache string util class, чтобы избежать NullPointerException
Вывод
источник
При использовании
st.replaceAll("\\s+","")
в Kotlin убедитесь, что вы завернули"\\s+"
с помощью Regex :источник
Первый с пробелом, второй без пробела.
Тогда это сделано.
источник
[ \t\n\x0B\f\r]
. Вы делаете только нормальные[ ]
пробелы.источник
Есть много способов решить эту проблему. Вы можете использовать функцию разделения или заменить функцию строк.
для получения дополнительной информации обратитесь к проблеме смайликов http://techno-terminal.blogspot.in/2015/10/how-to-remove-spaces-from-given-string.html
источник
Чтобы удалить пробелы в вашем примере, это еще один способ сделать это:
Что он делает, так это конвертирует его в массив с пробелами, являющимися разделителями, а затем объединяет элементы в массиве без пробелов.
Это работает довольно хорошо и легко понять.
источник
Есть и другие символьные пространства, которые тоже существуют в строках. Таким образом, нам может понадобиться заменить символ пространства из строк.
Пример: пространство без перерыва, пространство три-EM, пространство пунктуации
Вот список космических символов http://jkorpela.fi/chars/spaces.html
Итак, нам нужно изменить
\ нас2004 для пространства три-на-EM
s.replaceAll ( "[\ u0020 \ u2004]", "")
источник
Пробел можно удалить с помощью функции isWhitespace из класса символов.
источник
Разделите каждую группу текста на собственную подстроку и затем объедините эти подстроки:
источник
Это может помочь.
источник
Вы также можете взглянуть на приведенный ниже код Java. Следующие коды не используют никаких «встроенных» методов.
Входные данные:
Вывод:
источник
источник
Довольно много ответов предоставлено. Я хотел бы дать решение, которое вполне читабельно и лучше, чем регулярное выражение.
источник