StringUtils.isBlank () so với String.isEmpty ()


215

Tôi đã chạy vào một số mã có sau:

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

Điều này dường như là chức năng tương đương như sau:

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

Là một sự khác biệt giữa hai ( org.apache.commons.lang3.StringUtils.isBlankjava.lang.String.isEmpty)?


7
Có thể đáng nói là cũng có một StringUtils.isEmpty(foo)thứ giúp bạn tránh các con trỏ null, giống như isBlank, nhưng không kiểm tra các ký tự khoảng trắng.
Xavi

Câu trả lời:


380

StringUtils.isBlank()kiểm tra xem mỗi ký tự của chuỗi là một ký tự khoảng trắng (hoặc chuỗi đó trống hay là null). Điều này hoàn toàn khác với việc chỉ kiểm tra xem chuỗi có trống không.

Từ các tài liệu được liên kết:

Kiểm tra xem một Chuỗi có khoảng trắng, trống ("") hoặc null.

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

Để so sánh StringUtils.isEmpty :

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

Cảnh báo: Trong java.lang.String .isBlank () và java.lang.String .isEmpty () làm việc như nhau ngoại trừ họ không gửi lại truecho null.

java.lang.String.isBlank()

java.lang.String.isEmpty()


135

Câu trả lời được chấp nhận từ @arshajii là hoàn toàn chính xác. Tuy nhiên, rõ ràng hơn bằng cách nói dưới đây,

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() cũng sẽ kiểm tra null, trong khi điều này:

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

sẽ ném một NullPointerExceptionnếu foolà null.


4
Có một sự khác biệt lớn hơn thế; xem câu trả lời của tôi
arshajii

3
Điều này là không đúng. String.isEmpty () sẽ trả về true nếu nó là null. Ít nhất nếu bạn đang nói về phiên bản apache.commons.lang. Tôi không chắc chắn về phiên bản Mùa xuân.
ryoung

1
Ý nghĩa của nhận xét của tôi đã được chỉnh sửa (công bằng mà nói nó có thể rõ ràng hơn từ việc di chuyển); Tôi đã không so sánh StringUtils.isBlank () với StringUtils.isEmpty () - chứ không phải StringUtils.isBlank () với giá trị của OP.isEmpty ()
chut

1
câu trả lời của chut là chính xác. Nếu java String foo là null, thì foo.isEmpty () sẽ ném NullPulumException. Apache StringUtils.isBlank (foo) trả về true ngay cả khi foo là null.
dùng2590805

6

StringUtils.isBlankcũng trả về truecho khoảng trắng:

isBlank (Chuỗi str)

Kiểm tra xem một Chuỗi có khoảng trắng, trống ("") hoặc null.


5

StringUtils.isBlank(foo)sẽ thực hiện kiểm tra null cho bạn. Nếu bạn thực hiện foo.isEmpty()và không foocó giá trị, bạn sẽ đưa ra một NullPulumException.


Có một sự khác biệt lớn hơn thế; xem câu trả lời của tôi
arshajii

2

StringUtils.isBlank () trả về true cho khoảng trống (chỉ là khoảng trắng) và cho String null. Trên thực tế, nó cắt các chuỗi Char và sau đó thực hiện kiểm tra.

StringUtils.isEmpty () trả về true khi không có kết quả trong tham số String hoặc khi tham số String là null. Sự khác biệt là isEmpty () trả về false nếu tham số String chỉ chứa các khoảng trắng. Nó coi khoảng trắng là trạng thái không trống.


2

Sự khác biệt duy nhất giữa isBlank () và isEmpty () là:

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

Cả hai đều có cùng một mã như thế nào isBlank sẽ xử lý các khoảng trắng có thể bạn muốn nói làBlankString này có mã để xử lý các khoảng trắng.

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

Thay vì sử dụng lib của bên thứ ba, hãy sử dụng 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

-2

Tôi đang trả lời điều này bởi vì đó là kết quả hàng đầu trong Google cho "Phương thức chuỗi isBlank ()".

Nếu bạn đang sử dụng Java 11 trở lên, bạn có thể sử dụng lớp String isBlank () . Phương thức này thực hiện tương tự như lớp StringUtils của Apache Commons.

Tôi đã viết một bài viết nhỏ về các ví dụ phương pháp này, đọc nó ở đây .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.