Найти в Дзене
Java

🚀 Java-совет, который спасает от невидимых багов

🚀 Java-совет, который спасает от невидимых багов Начиная с Java 11, вместо привычного trim() лучше использовать strip(). Выглядит как мелочь, но на практике это разница между "почему у меня не совпадают строки?!" и нормальной жизнью. В чем проблема `trim()` trim() работает по старым правилам и убирает только базовые ASCII-пробелы. Юникодные пробельные символы (а их куча - из копипасты, веба, PDF и т.д.) могут остаться в строке и ломать: - сравнения строк - парсинг - валидацию - поиск дубликатов И визуально ты их не увидишь. Почему `strip()` лучше strip() использует Character.isWhitespace() и следует Unicode-стандарту, а не только ASCII. То есть реально очищает строку от всех видов пробелов. Пример String text = "\u2003Hello World\u2003"; System.out.println("trim(): [" + text.trim() + "]"); System.out.println("strip(): [" + text.strip() + "]");

🚀 Java-совет, который спасает от невидимых багов

Начиная с Java 11, вместо привычного trim() лучше использовать strip().

Выглядит как мелочь, но на практике это разница между "почему у меня не совпадают строки?!" и нормальной жизнью.

В чем проблема `trim()`

trim() работает по старым правилам и убирает только базовые ASCII-пробелы.

Юникодные пробельные символы (а их куча - из копипасты, веба, PDF и т.д.) могут остаться в строке и ломать:

- сравнения строк

- парсинг

- валидацию

- поиск дубликатов

И визуально ты их не увидишь.

Почему `strip()` лучше

strip() использует Character.isWhitespace() и следует Unicode-стандарту, а не только ASCII.

То есть реально очищает строку от всех видов пробелов.

Пример

String text = "\u2003Hello World\u2003";

System.out.println("trim(): [" + text.trim() + "]");

System.out.println("strip(): [" + text.strip() + "]");