StringUtils.isBlank() vs String.isEmpty() (Programare, Java, String, String Utils)

NSA a intrebat.

Am dat peste un cod care are următoarele:

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

Acest lucru pare a fi echivalent din punct de vedere funcțional cu următoarele:

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

Este o diferență între cele două (org.apache.commons.lang3.StringUtils.isBlank și java.lang.String.isEmpty)?

Comentarii

  • Ar putea fi demn de menționat faptul că există, de asemenea, o funcție StringUtils.isEmpty(foo) care vă ajută să evitați indicatorii nuli, la fel ca și isBlank, , dar nu verifică dacă există caractere de spații albe. –  > Por Xavi.
12 răspunsuri
arshajii

StringUtils.isBlank() verifică dacă fiecare caracter al șirului este un caracter de spațiu alb (sau dacă șirul este gol sau dacă este nul). Acest lucru este total diferit de simpla verificare dacă șirul este gol.

Din documentația legată:

Verifică dacă un șir de caractere este spațiu alb, gol („”) sau nul.

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

Pentru comparație StringUtils.isEmpty:

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

Warning: În java.lang.String.isBlank() și java.lang.String.isEmpty() funcționează la fel, cu excepția faptului că nu returnează true pentru null.

java.lang.String.isBlank() (din Java 11)

java.lang.String.isEmpty()

nilesh

Răspunsul acceptat de la @arshajii este complet corect. Cu toate acestea, doar fiind mai explicit prin a spune mai jos,

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

yallam

StringUtils isEmpty = String isEmpty verifică + verifică dacă este nul.

StringUtils isBlank = StringUtils isEmpty verifică + verifică dacă textul conține numai caractere de spații albe.

Linkuri utile pentru investigații suplimentare:

chut

StringUtils.isBlank() va verifica, de asemenea, dacă este nul, în timp ce acest lucru:

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

va arunca un NullPointerException dacă foo este nul.

Comentarii

  • Există o diferență mai mare de atât; a se vedea răspunsul meu. –  > Por arshajii.
  • Acest lucru este incorect. String.isEmpty() va returna true dacă este nul. Cel puțin dacă vă referiți la versiunea apache.commons.lang. Nu sunt sigur în ceea ce privește versiunea Spring. –  > Por ryoung.
  • Sensul comentariului meu a fost modificat (ca să fiu corect, ar fi putut fi mai clar de la bun început); nu comparam StringUtils.isBlank() cu StringUtils.isEmpty() – mai degrabă StringUtils.isBlank() cu value.isEmpty() din OP –  > Por chut.
  • răspunsul lui chut este corect. Dacă java String foo este nul, atunci foo.isEmpty() aruncă NullPointerException. Aplicația apache StringUtils.isBlank(foo) returnează true chiar dacă foo este nul. –  > Por user2590805.
Octavia Togami

StringUtils.isBlank de asemenea, returnează true doar pentru spații albe:

isBlank(String str)

Verifică dacă un String este spațiu alb, gol („”) sau nul.

Valoarea implicită

StringUtils.isBlank(foo) va efectua o verificare pentru dumneavoastră. Dacă efectuați foo.isEmpty() și foo este nulă, se va ridica o excepție NullPointerException.

Comentarii

  • Există o diferență mai mare de atât; consultați răspunsul meu. –  > Por arshajii.
utilizator4555388

StringUtils.isBlank() returnează true pentru blank-uri (doar spații albe)și pentru String-uri nule, de asemenea. De fapt, taie secvențele Char și apoi efectuează verificarea.

StringUtils.isEmpty() returnează true atunci când nu există nicio secvență de caractere în parametrul String sau când parametrul String este nul. Diferența este că isEmpty() returnează false dacă parametrul String conține doar spații de tip whiltespaces. Aceasta consideră spațiile albe ca fiind o stare de nevid.

disha4mourya

Singura diferență între isBlank() și isEmpty() este:

StringUtils.isBlank(" ")       = true //compared string value has space and considered as blank

StringUtils.isEmpty(" ")       = false //compared string value has space and not considered as empty

ravthiru

În loc să folosiți o librărie terță parte, folosiți Java 11 isBlank().

    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

Apoorva Dhanvanthri
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;
}

Ambele au același cod, cum va gestiona isBlank spațiile albe, probabil că v-ați referit la isBlankString, care are codul pentru gestionarea spațiilor albe.

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

Muhammad Zahab Ahmed Khan

Concluzia este :

isEmpty take " " as a character but isBlank not. Rest both are same.

Pankaj

Răspund la această întrebare pentru că este primul rezultat în Google pentru „String isBlank() Method”.

Dacă folosiți Java 11 sau o versiune mai recentă, puteți utiliza metoda Clasa String isBlank() metoda Această metodă face același lucru ca și clasa Apache Commons StringUtils.

Am scris o mică postare despre exemplele acestei metode, citiți-o aici.