Compruebe si una cadena no es nula ni está vacía

Resuelto asked hace 14 años • 35 respuestas

¿ Cómo puedo comprobar si una cadena no está nullvacía o no?

public void doStuff(String str)
{
    if (str != null && str != "**here I want to check the 'str' is empty or not**")
    {
        /* handle empty string */
    }
    /* ... */
}
 avatar Aug 30 '10 15:08
Aceptado

¿ Qué pasa con isEmpty() ?

if(str != null && !str.isEmpty())

Asegúrese de utilizar las partes de &&en este orden, porque Java no procederá a evaluar la segunda parte si la primera parte &&falla, garantizando así que no obtendrá una excepción de puntero nulo str.isEmpty()si stres nulo.

Cuidado, sólo está disponible desde Java SE 1.6. Tienes que comprobar str.length() == 0las versiones anteriores.


Para ignorar los espacios en blanco también:

if(str != null && !str.trim().isEmpty())

(dado que Java 11 str.trim().isEmpty()se puede reducir a str.isBlank()lo que también probará otros espacios en blanco Unicode)

Envuelto en una práctica función:

public static boolean empty( final String s ) {
  // Null-safe, short-circuit evaluation.
  return s == null || s.trim().isEmpty();
}

Se convierte en:

if( !empty( str ) )
Colin Hebert avatar Aug 30 '2010 08:08 Colin Hebert

Utilice org.apache.commons.lang.StringUtils

Me gusta usar Apache commons-lang para este tipo de cosas, y especialmente la clase de utilidad StringUtils :

import org.apache.commons.lang.StringUtils;

if (StringUtils.isNotBlank(str)) {
    ...
} 

if (StringUtils.isBlank(str)) {
    ...
} 
Romain Linsolas avatar Aug 30 '2010 08:08 Romain Linsolas

Simplemente agregando Android aquí:

import android.text.TextUtils;

if (!TextUtils.isEmpty(str)) {
...
}
phreakhead avatar Jan 24 '2013 21:01 phreakhead

Para agregar a @BJorn y @SeanPatrickFloyd La forma Guava de hacer esto es:

Strings.nullToEmpty(str).isEmpty(); 
// or
Strings.isNullOrEmpty(str);

Commons Lang es más legible a veces, pero poco a poco he ido confiando más en Guava y, a veces, Commons Lang es confuso cuando se trata isBlank()(como en lo que son espacios en blanco o no).

La versión de Guava de Commons Lang isBlanksería:

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

Diré que el código que no permite ""(vacío) Y null es sospechoso y potencialmente defectuoso porque probablemente no maneja todos los casos en los que no permitir nulltiene sentido (aunque para SQL puedo entender que SQL/HQL es extraño '').

Adam Gent avatar Oct 30 '2012 20:10 Adam Gent
str != null && str.length() != 0

alternativamente

str != null && !str.equals("")

o

str != null && !"".equals(str)

Nota: La segunda verificación (primera y segunda alternativa) supone que str no es nulo. ¡Está bien solo porque la primera verificación hace eso (y Java no realiza la segunda verificación si la primera es falsa)!

IMPORTANTE: NO use == para igualdad de cadenas. == comprueba que el puntero sea igual, no el valor. ¡Dos cadenas pueden estar en diferentes direcciones de memoria (dos instancias) pero tener el mismo valor!

helios avatar Aug 30 '2010 08:08 helios