Лучший способ обрезки пробелов в строке
Вопрос
Как мне обрезать пробелы внутри, оставив только один пробел с учетом производительности?
Input: AA BB Output: AA BB Input: A A Output: A A
Решение
System.out.println(" AA BB".replaceAll("\\s+", " ").trim());
Выходной сигнал:
AA BB
Примечание:В отличие от некоторых других приведенных здесь решений, это также заменяет одну табуляцию одним пробелом.Если у вас нет никаких вкладок, вы можете использовать вместо них "{2,}", что будет еще быстрее:
System.out.println(" AA BB".replaceAll(" {2,}", " ").trim());
Другие советы
Замените два или более пробелов " \\ s {2,} "
на один пробел " "
и затем выполните trim ()
, чтобы избавиться от начальных и конечных пробелов, как показано в первом примере.
output = input.replaceAll("\\s{2,}", " ").trim();
s = s.replaceAll("\\s+", " " ).trim();
<код> код>
"Hello a a g g a gag gs gs@".replaceAll( "[ ]+{2}", " ") ).trim();
Здесь есть правильные ответы, например:
s = s.replaceAll("\\s+", " " ).trim();
Но я думаю, что также важно выбрать правильный вопрос. Вместо того, чтобы спрашивать об обрезке String
с помощью регулярных выражений, почему бы просто не спросить об обрезке String
и позволить людям, отвечающим на вопросы, показать вам лучшую стратегию?
Возможно, есть лучшие способы свернуть пробелы, чем использовать регулярное выражение. Конечно, есть другие способы.