Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как убрать пробелы в начале и конце строки

Короткий ответ

Метод strip() убирает пробелы, табуляции и переводы строк по краям:

void main() {
    String input = "  Anna \n";
    IO.println("[" + input.strip() + "]");
}

Результат:

[Anna]

Только с одной стороны

stripLeading() убирает пробелы в начале, stripTrailing() — в конце:

void main() {
    String text = "   hi   ";
 
    IO.println("[" + text.stripLeading() + "]");
    IO.println("[" + text.stripTrailing() + "]");
}

Результат:

[hi   ]
[   hi]

strip или trim

Старый trim() убирает только символы с кодом до 32 и не знает про пробелы Unicode, например неразрывный пробел из Word или HTML. strip() их понимает:

void main() {
    String text = " price ";
 
    IO.println("[" + text.trim() + "]");
    IO.println("[" + text.strip() + "]");
}

Результат:

[ price ]
[price]

Пробелы внутри строки

Лишние пробелы между словами сожмите регулярным выражением:

void main() {
    String text = "  too    many   spaces ";
    IO.println(text.strip().replaceAll("\\s+", " "));
}

Результат:

too many spaces

Частая ошибка

Вызвать strip() и не сохранить результат. Метод не меняет строку, а возвращает новую:

void main() {
    String name = "  Oleg  ";
    name.strip();
    IO.println("[" + name + "]");
}

Результат:

[  Oleg  ]

Функции из этого ответа

  • String.strip() — Удаляет любые пробельные символы Unicode в начале и в конце строки.
  • String.trim() — Удаляет пробелы и управляющие символы в начале и в конце строки.
  • String.isBlank() — Проверяет, что строка пустая или состоит только из пробелов.
  • String.replaceAll() — Заменяет все совпадения регулярного выражения.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.