web-dev-qa-db-fra.com

Le meilleur moyen de vérifier que la chaîne est vide ou nulle

je suis sûr que cela a dû être demandé auparavant de différentes manières - comme isEmptyOrNull est si courant mais que les gens l'appliquent différemment. mais j'ai ci-dessous une requête curieuse en termes de meilleure approche disponible, ce qui est bon pour la mémoire et les performances à la fois. 

1) La liste ci-dessous ne représente pas tous les espaces comme dans le cas d'une balise XML vide

return inputString==null || inputString.length()==0;

2) Ci-dessous, on prend soin mais l'assiette peut manger de la performance + de la mémoire 

return inputString==null || inputString.trim().length()==0;

3) converti en correcteur de modèle (invoqué uniquement lorsque la chaîne est d'une longueur non nulle)

private static final Pattern p = Pattern.compile("\\s+");

return inputString==null || inputString.length()==0 || p.matcher(inputString).matches();

4) Un autre?

20
prash

Méthode utile chez Apache Commons:

 org.Apache.commons.lang.StringUtils.isBlank(String str)

https://commons.Apache.org/proper/commons-lang/javadocs/api-2.6/org/Apache/commons/lang/StringUtils.html#isBlank(Java.lang.String)

19
puczo

Juste pour montrer la position de Java 8 pour supprimer les valeurs nulles.

String s = Optional.ofNullable(myString).orElse("");
if (s.trim().isEmpty()) {
    ...
}

Cela a du sens si vous pouvez utiliser Optional<String>.

12
Joop Eggen

Celui-ci de Google Guava pourrait vérifier "Chaînes nulles et vides" dans le même temps.

Strings.isNullOrEmpty("Your string.");

Ajouter une dépendance avec Maven

<dependency>
  <groupId>com.google.guava</groupId>
  <artifactId>guava</artifactId>
  <version>20.0</version>
</dependency>

avec Gradle

dependencies {
  compile 'com.google.guava:guava:20.0'
}
7
mavis.chen

Apache Commons Lang a la méthode StringUtils.isEmpty(String str) qui retourne vrai si l'argument est vide ou nul

2
Evgeniy Dorofeev

Dans la plupart des cas, StringUtils.isBlank(str) de la bibliothèque Apache commons résoudrait le problème. Mais s'il y a un cas où la chaîne d'entrée en cours de vérification a une valeur null entre guillemets, elle ne parvient pas à vérifier de tels cas.

Prenons un exemple où j'ai un objet d'entrée qui a été converti en chaîne à l'aide de l'API String.valueOf(obj). Dans le cas où la référence obj est nulle, String.valueOf renvoie "null" au lieu de null.

Lorsque vous essayez d'utiliser, StringUtils.isBlank("null"), l'API échoue misérablement, vous devrez peut-être également rechercher de tels cas d'utilisation pour vous assurer que votre validation est correcte.

1
Adarsh Thimmappa

Simplement et clairement:

if (str == null || str.trim().length() == 0) {
    // str is empty
}
0
simhumileco