Вопрос

Как мне обрезать пробелы внутри, оставив только один пробел с учетом производительности?

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 и позволить людям, отвечающим на вопросы, показать вам лучшую стратегию?

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top