StringUtils.isBlank() frente a String.isEmpty()
Me encontré con un código que tiene lo siguiente:
String foo = getvalue("foo");
if (StringUtils.isBlank(foo))
doStuff();
else
doOtherStuff();
Esto parece ser funcionalmente equivalente a lo siguiente:
String foo = getvalue("foo");
if (foo.isEmpty())
doStuff();
else
doOtherStuff();
¿ Hay alguna diferencia entre los dos ( org.apache.commons.lang3.StringUtils.isBlank
y java.lang.String.isEmpty
)?
StringUtils.isBlank()
comprueba que cada carácter de la cadena sea un carácter de espacio en blanco (o que la cadena esté vacía o sea nula). Esto es totalmente diferente a simplemente verificar si la cadena está vacía.
De la documentación vinculada:
Comprueba si una cadena tiene espacios en blanco, está vacía ("") o es nula.
StringUtils.isBlank(null) = true StringUtils.isBlank("") = true StringUtils.isBlank(" ") = true StringUtils.isBlank("bob") = false StringUtils.isBlank(" bob ") = false
A modo de comparación StringUtils.isEmpty :
StringUtils.isEmpty(null) = true
StringUtils.isEmpty("") = true
StringUtils.isEmpty(" ") = false
StringUtils.isEmpty("bob") = false
StringUtils.isEmpty(" bob ") = false
Advertencia: en java.lang.String .isBlank() y java.lang.String .isEmpty() funcionan igual excepto que no regresan true
para null
.
java.lang.String.isBlank()
(desde Java 11)
java.lang.String.isEmpty()
La respuesta aceptada de @arshajii es totalmente correcta. Sin embargo, siendo más explícito diciendo a continuación,
StringUtils.isBlank()
StringUtils.isBlank(null) = true
StringUtils.isBlank("") = true
StringUtils.isBlank(" ") = true
StringUtils.isBlank("bob") = false
StringUtils.isBlank(" bob ") = false
StringUtils.isEmpty
StringUtils.isEmpty(null) = true
StringUtils.isEmpty("") = true
StringUtils.isEmpty(" ") = false
StringUtils.isEmpty("bob") = false
StringUtils.isEmpty(" bob ") = false
StringUtils isEmpty = String isEmpty comprueba + comprueba si hay nulos.
StringUtils isBlank = StringUtils isEmpty comprueba + comprueba si el texto contiene sólo espacios en blanco.
Enlaces útiles para una mayor investigación:
- StringUtils es documentación en blanco
- StringUtils está documentación vacía
- La cadena está vacía documentación
StringUtils.isBlank()
También comprobará si hay nulo, mientras que esto:
String foo = getvalue("foo");
if (foo.isEmpty())
arrojará un NullPointerException
si foo
es nulo.