StringUtils.isBlank () vs String.isEmpty ()

Mi sono imbattuto in un codice che ha il seguente:

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

Questo sembra essere funzionalmente equivalente al seguente:

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

C’è una differenza tra i due ( org.apache.commons.lang3.StringUtils.isBlank e java.lang.String.isEmpty )?

StringUtils.isBlank() controlla che ogni carattere della stringa sia un carattere di spaziatura (o che la stringa sia vuota o che sia null). Questo è totalmente diverso dal semplice controllo se la stringa è vuota.

Dalla documentazione collegata:

Controlla se una stringa è vuota, vuota (“”) o nulla.

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

La risposta accettata da @arshajii è completamente corretta. Tuttavia, solo essendo più esplicito dicendo di seguito,

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 

apache isEmpty = String isEmpty checks + controlla null.

apache isBlank = apache isEmpty checks + controlla se il testo contiene solo caratteri di spazio bianco.

Link utili per ulteriori indagini:

  • apache isBlank documentation
  • apache isEmpty documentation
  • String isEmpty documentation

StringUtils.isBlank() controllerà anche null, mentre questo:

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

getterà una NullPointerException se foo è nullo.

StringUtils.isBlank restituisce anche true per solo spazi bianchi:

isBlank (String str)

Controlla se una stringa è vuota, vuota (“”) o nulla.

StringUtils.isBlank(foo) eseguirà un controllo nulla per te. Se si esegue foo.isEmpty() e foo è null, si genera un NullPointerException.

StringUtils.isBlank () restituisce true per gli spazi vuoti (solo spazi bianchi) e anche per String nulli. In realtà taglia le sequenze Char e quindi esegue il controllo.

StringUtils.isEmpty () restituisce true quando non ci sono attributi nel parametro String o quando il parametro String è null. La differenza è che isEmpty () restituisce false se il parametro String contiene solo spazi infiniti. Considera gli spazi bianchi come uno stato di non vuoto.

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

Entrambi hanno lo stesso codice, come è in grado di gestire gli spazi vuoti in bianco. Probabilmente si tratta di un object. In realtà questo ha il codice per la gestione degli spazi bianchi.

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