Замените лишние пробелы в строке одним пробелом в Java, без регулярных выражений - PullRequest
1 голос
/ 15 февраля 2020

Я хочу в основном сделать это:

String secondString = firstString.trim().replaceAll(" +", " ");

Или заменить все несколько пробелов в моей строке одним пробелом. Однако возможно ли сделать это без регулярных выражений, как я делаю здесь?

Спасибо!

1 Ответ

1 голос
/ 15 февраля 2020

Однако возможно ли сделать это без регулярных выражений, как я делаю здесь?

Да . Регулярное выражение понятно и легко читается, поэтому я, вероятно, воспользуюсь им; но вы могли бы использовать вложенные l oop, a StringBuilder и Character.isWhitespace(char) как

StringBuilder sb = new StringBuilder();
for (int i = 0; i < firstString.length(); i++) {
    sb.append(firstString.charAt(i));
    if (Character.isWhitespace(firstString.charAt(i))) {
        // The current character is white space, skip characters until 
        // the next character is not.
        while (i + 1 < firstString.length() 
                    && Character.isWhitespace(firstString.charAt(i + 1))) {
            i++;
        }
    }
}
String secondString = sb.toString();

Примечание: это редкий пример вложенного l oop, то есть O (N); внутренний l oop изменяет тот же счетчик, что и внешний l oop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...