Подтвердить что ты не робот

Apache StringUtils.isBlank(str) vs. Guava Strings.isNullOrEmpty(str): следует ли регулярно проверять пробелы?

Есть ли какие-либо преимущества при использовании

StringUtils.isBlank(str) 

из Apache commons-lang.

vs

Strings.isNullOrEmpty(String string)

из Google Guava?

Я хочу заменить сотни случаев их использования в проекте Java:

if(str == null || str.isEmpty())

Guava isNullOrEmpty кажется прямой заменой использованию выше в моем проекте.

Но больше людей, похоже, используют Apache isBlank метод, основанный на моем чтении S.O. вопросы.

Единственное отличие состоит в том, что StringUtils.isBlank(str) также проверяет пробелы в дополнение к проверке, является ли строка пустой или пустой.

Обычно рекомендуется проверить строку для пробелов или может привести к другому результату в вашем коде, чем простая проверка Guava?

4b9b3361

Ответ 1

Если вы хотите использовать Guava для репликации поведения isBlank, я бы использовал вместо этого следующий метод:

Strings.nullToEmpty(str).trim().isEmpty()

Ответ 2

Когда вам нужно принимать данные от людей, вы должны прощать и стирать ведущие и конечные пробелы из любого текста, который они набирают, если это имеет смысл в конкретном приложении.

Тем не менее, использование isBlank является только полузакрытым. Вам также нужно trim строки перед их дальнейшей обработкой. Поэтому я предлагаю использовать s = trim(s); перед проверкой с помощью isNullOrEmpty.

Ответ 3

isBlank невероятно переоценивается. Код UI, который читает текст пользователя прямо из полей ввода, может обрезать пробелы раз и навсегда, а затем вы можете перестать беспокоиться об этом.

Ответ 4

StringUtils.isBlank(str) очень сильно отличается от Strings.isNullOrEmpty(String string)

первый пример кода будет проверять, является ли строка пустой или нет, она также будет содержать пробелы и возвращает true

StringUtils.isBlank(null)      = true 
StringUtils.isBlank("")         = true 
StringUtils.isBlank(" ")        = true 
StringUtils.isBlank("bob")      = false
StringUtils.isBlank("  bob  ")  = false

где as Strings.isNullOrEmpty(String string) Возвращает true, если заданная строка равна null или является пустой строкой

Ответ 5

Гуава более или менее нацелена на замену Apache Commons на "следующее поколение". Практически не существует большой практической разницы между использованием isBlank() vs isNullOrEmpty() за пределами использования одного или другого последовательно.