java - substringbefore - StringUtils.isBlank() frente a String.isEmpty()
stringutils.isblank java (8)
La respuesta aceptada de @arshajii es totalmente correcta. Sin embargo, siendo más explícito diciendo lo siguiente,
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
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 una diferencia entre los dos ( org.apache.commons.lang3.StringUtils.isBlank
y java.lang.String.isEmpty
)?
StringUtils.isBlank () devuelve true para espacios en blanco (solo espacios en blanco) y para cadena nula también. En realidad, recorta las secuencias Char y luego realiza el control.
StringUtils.isEmpty () devuelve verdadero cuando no hay charsequence en el parámetro String o cuando el parámetro String es nulo. La diferencia es que isEmpty () devuelve falso si el parámetro String contiene solo whiltespaces. Considera los espacios en blanco como un estado de no estar vacío.
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 que sea nula). Esto es totalmente diferente a solo verificar si la cadena está vacía.
De la documentación vinculada:
Comprueba si una cadena es un espacio en blanco, vacío ("") o nulo.
StringUtils.isBlank(null) = true StringUtils.isBlank("") = true StringUtils.isBlank(" ") = true StringUtils.isBlank("bob") = false StringUtils.isBlank(" bob ") = false
StringUtils.isBlank()
también comprobará nulo, mientras que esto:
String foo = getvalue("foo");
if (foo.isEmpty())
lanzará una NullPointerException
si foo
es nulo.
StringUtils.isBlank(foo)
realizará una comprobación nula por usted. Si realiza foo.isEmpty()
y foo
es nulo, generará una NullPointerException.
StringUtils.isBlank
también devuelve true
solo para el espacio en blanco:
isBlank (String str)
Comprueba si una cadena es un espacio en blanco, vacío ("") o nulo.
apache isEmpty = String is Empty comprueba + comprueba null.
apache isBlank = apache isEmpty checks + comprueba si el texto contiene solo caracteres de espacio en blanco.
Enlaces útiles para una mayor investigación:
public static boolean isEmpty(String ptext) {
return ptext == null || ptext.trim().length() == 0;
}
public static boolean isBlank(String ptext) {
return ptext == null || ptext.trim().length() == 0;
}
Ambos tienen el mismo código. ¿Cómo manejará isBlank los espacios en blanco? Probablemente se refería a que isBlankString tiene el código para manejar espacios en blanco.
public static boolean isBlankString( String pString ) {
int strLength;
if( pString == null || (strLength = pString.length()) == 0)
return true;
for(int i=0; i < strLength; i++)
if(!Character.isWhitespace(pString.charAt(i)))
return false;
return false;
}