Apache StringUtils.isBlank (str) и Guava Strings.isNullOrEmpty (str): Стоит ли регулярно проверять наличие пробелов? - PullRequest
20 голосов
/ 07 сентября 2011

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

StringUtils.isBlank(str) 

от Apache commons-lang.

против

Strings.isNullOrEmpty(String string)

от Google Guava?

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

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

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

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

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

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

Ответы [ 5 ]

12 голосов
/ 07 апреля 2016

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

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

8 голосов
/ 07 сентября 2011

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

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

3 голосов
/ 04 июля 2017

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, если заданная строка пуста или является пустой строкой

3 голосов
/ 09 сентября 2011

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

0 голосов
/ 16 декабря 2011

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

...