web-dev-qa-db-fra.com

StringUtils.isBlank () vs String.isEmpty ()

J'ai rencontré du code qui a les caractéristiques suivantes:

String foo = getvalue("foo");
if (StringUtils.isBlank(foo))
    doStuff();
else
    doOtherStuff();

Cela semble être fonctionnellement équivalent à ce qui suit:

String foo = getvalue("foo");
if (foo.isEmpty())
    doStuff();
else
    doOtherStuff();

Une différence entre les deux (org.Apache.commons.lang3.StringUtils.isBlank et Java.lang.String.isEmpty)?

162
NSA

StringUtils.isBlank() vérifie que chaque caractère de la chaîne est un caractère d'espacement (ou que la chaîne est vide ou qu'elle est nulle). C'est totalement différent de simplement vérifier si la chaîne est vide.

De la documentation liée:

Vérifie si une chaîne est un espace, vide ("") ou null.

 StringUtils.isBlank(null)      = true
 StringUtils.isBlank("")        = true  
 StringUtils.isBlank(" ")       = true  
 StringUtils.isBlank("bob")     = false  
 StringUtils.isBlank("  bob  ") = false

Pour comparaison StringUtils.isEmpty :

 StringUtils.isEmpty(null)      = true
 StringUtils.isEmpty("")        = true  
 StringUtils.isEmpty(" ")       = false  
 StringUtils.isEmpty("bob")     = false  
 StringUtils.isEmpty("  bob  ") = false

Avertissement: Dans , Java.lang.String . IsBlank () et Java.lang.String . isEmpty () fonctionne de la même manière, sauf qu'ils ne renvoient pas true pour null.

Java.lang.String.isBlank()

Java.lang.String.isEmpty()

288
arshajii

La réponse acceptée de @arshajii est totalement correcte. Cependant, juste pour être plus explicite en disant ci-dessous,

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
129
nilesh

StringUtils isEmpty = String isEmpty vérifie + recherche la valeur null.

StringUtils isBlank = StringUtils isEmpty vérifie + vérifie si le texte ne contient que des espaces personnages).

Liens utiles pour une enquête plus poussée:

38
yallam

StringUtils.isBlank() recherchera également null, alors que ceci:

String foo = getvalue("foo");
if (foo.isEmpty())

jettera un NullPointerException si foo est nul.

14
chut

StringUtils.isBlank renvoie également true uniquement pour les espaces:

isBlank (String str)

Vérifie si une chaîne est un espace, vide ("") ou null.

6
Octavia Togami

StringUtils.isBlank(foo) effectuera un contrôle nul pour vous. Si vous effectuez foo.isEmpty() et foo est null, vous déclencherez une exception NullPointerException.

4
Default

StringUtils.isBlank () renvoie true pour les espaces (uniquement les espaces) et pour la chaîne null. En fait, il coupe les séquences de caractères, puis effectue un contrôle.

StringUtils.isEmpty () renvoie true s'il n'y a pas de séquence de caractères dans le paramètre String ou lorsque le paramètre String est null. La différence est que isEmpty () renvoie false si le paramètre String contient uniquement des espaces blancs. Il considère les espaces comme un état de non vide.

2
user4555388

Avec Java 11, isBlank () est disponible.

    String str1 = "";
    String str2 = "   ";
    Character ch = '\u0020';
    String str3 =ch+" "+ch;

    System.out.println(str1.isEmpty()); //true
    System.out.println(str2.isEmpty()); //false
    System.out.println(str3.isEmpty()); //false            

    System.out.println(str1.isBlank()); //true
    System.out.println(str2.isBlank()); //true
    System.out.println(str3.isBlank()); //true
1
ravthiru
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;
}

Les deux ont le même code. Comment isBlank gérera-t-il les espaces, probablement que vous vouliez dire? IsBlankString a le code pour la gestion des espaces.

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;
}
1

Je réponds à cela parce que c'est le meilleur résultat de Google pour "String isBlank () Method".

Si vous utilisez Java 11 ou une version ultérieure, vous pouvez utiliser la méthode String class isBlank () . Cette méthode fait la même chose que la classe Apache Commons StringUtils.

J'ai écrit un petit post sur cette méthode, lisez-le ici .

0
Pankaj