StringUtils.isBlank () ve String.isEmpty ()


215

Aşağıdaki kod bazı koştu:

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

Bu, işlevsel olarak aşağıdakilere eşdeğer görünmektedir:

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

İkisi ( org.apache.commons.lang3.StringUtils.isBlankve java.lang.String.isEmpty) arasındaki fark nedir?


7
StringUtils.isEmpty(foo)Boş göstericilerden kaçınmanıza yardımcı olan isBlank, ancak boşluk karakterlerini kontrol etmeyen bir özellik olduğunu da belirtmek gerekir .
Xavi

Yanıtlar:


380

StringUtils.isBlank()dizenin her karakterinin bir boşluk karakteri olduğunu (veya dizenin boş olduğunu veya boş olduğunu) kontrol eder. Bu, dizenin boş olup olmadığını kontrol etmekten tamamen farklıdır.

Bağlantılı belgelerden:

Bir Dizenin boşluk, boş ("") veya null olup olmadığını kontrol eder.

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

Karşılaştırma için StringUtils.isEmpty :

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

Uyarı: java.lang.String .isBlank () ve java.lang.String .isEmpty () trueiçin, geri dönmüyorlarsa aynı şekilde çalışırlar null.

java.lang.String.isBlank()

java.lang.String.isEmpty()


135

@Arshajii tarafından kabul edilen cevap tamamen doğrudur. Ancak, aşağıda söyleyerek daha açık olmak,

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


14

StringUtils.isBlank() null olup olmadığını da kontrol eder, oysa bu:

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

NullPointerExceptioneğer foobir null değerini atacaktır .


4
Bundan daha büyük bir fark var; cevabımı gör.
arshajii

3
Bu yanlış. String.isEmpty (), boşsa true değerini döndürür. En azından apache.commons.lang sürümü hakkında konuşuyorsanız. Bahar versiyonundan emin değilim.
genç

1
Yorumumun anlamı düzeltildi (adil olmak gerekirse get-go'dan daha açık olabilirdi); StringUtils.isBlank () ile StringUtils.isEmpty () - yerine StringUtils.isBlank () OP değeri value.isEmpty ()
chut

1
chut'un cevabı doğrudur. Java String foo null olursa, foo.isEmpty (), NullPointerException öğesini atar. Apache StringUtils.isBlank (foo), foo boş olsa bile true değerini döndürür.
user2590805

6

StringUtils.isBlanktruesadece boşluk için de döner :

isBlank (String str)

Bir Dizenin boşluk, boş ("") veya null olup olmadığını kontrol eder.


5

StringUtils.isBlank(foo)sizin için boş bir denetim gerçekleştirir. Eğer gerçekleştirirseniz foo.isEmpty()ve foonull, bir NullPointerException yükseltecektir.


Bundan daha büyük bir fark var; cevabımı gör.
arshajii

2

StringUtils.isBlank (), boşluklar (yalnızca beyaz boşluklar) ve null String için de true değerini döndürür. Aslında Char dizilerini düzeltir ve daha sonra kontrol yapar.

StringUtils.isEmpty (), String parametresinde herhangi bir charsequence olmadığında veya String parametresi null olduğunda true değerini döndürür. Dize parametresi sadece whiltespaces içeriyorsa, isEmpty () işlevi false değerini döndürür. Beyaz boşlukları boş olmama durumu olarak görür.


2

İsBlank () ve isEmpty () arasındaki tek fark şudur:

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

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

Her ikisi de isBlank'ın beyaz boşlukları nasıl işleyeceği ile aynı koda sahiptir.

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

Üçüncü taraf lib kullanmak yerine Java 11 isBlank () kullanın

    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

-2

Ben "String isBlank () yöntemi" için Google'da en iyi sonuç çünkü ben bu cevap.

Java 11 veya üstünü kullanıyorsanız String sınıfı isBlank () yöntemini kullanabilirsiniz. Bu yöntem Apache Commons StringUtils sınıfıyla aynı şeyi yapar.

Bu yöntem örnekleri üzerine küçük bir yazı yazdım, burada okuyun .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.