Почему trim() может не убрать пробелы по краям строки?
Почему trim() может не убрать пробелы по краям строки? В Java часто очищают пользовательский ввод так: String name = input.trim(); Но trim() ориентируется на символы с кодом не выше U+0020. Некоторые пробельные символы Unicode под это правило не попадают. Например, строка может начинаться и заканчиваться широким пробелом U+2003: String input = "\u2003admin\u2003"; System.out.println(input.trim().length()); Видимые на экране отступы останутся. Это может сломать сравнение логина, поиск ключа или проверку поля формы. Начиная с Java 11 есть strip(), который опирается на определение пробельного символа в Character.isWhitespace: String name = input.strip(); System.out.println(name.equals("admin")); Если нужна очистка только с одной стороны, есть отдельные методы: String left = input.stripLeading(); String right = input.stripTrailing(); Для проверки строки, состоящей только из пробелов, пригодится isBlank(): if (input.isBlank()) { throw new IllegalArgumentException("Empty name"); } strip() не удаляет все символы, которые выглядят как пробелы. Для специальных форматов ввода полезно отдельно определить допустимые символы. Java Библиотека | Мы в Телеграм