web-dev-qa-db-ja.com

StringUtils.isBlank()とString.isEmpty()の比較

私は次のようなコードを見つけました。

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

これは、機能的には次のものと同等です。

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

両者(org.Apache.commons.lang3.StringUtils.isBlankJava.lang.String.isEmpty)は違いますか?

146
NSA

StringUtils.isBlank() は、文字列の各文字が空白文字であること(または文字列が空であること、またはnullであること)を確認します。これは、文字列が空かどうかをチェックするのとはまったく異なります。

リンク先のドキュメントから:

文字列が空白、空( "")、またはnullかどうかを確認します。

 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

警告: Java.lang.String 。isBlank()および Java.lang.String 。isEmpty()では、trueに対してnullが返されない点を除いて同じように機能します。

Java.lang.String.isBlank()

Java.lang.String.isEmpty()

248
arshajii

@arshajiiからの受け入れられた答えは全く正しいです。しかし、以下で言うことによってより明確になるだけで、

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

StringUtils isEmpty = 文字列isEmpty nullをチェックします。

StringUtils isBlank = StringUtils isEmpty +テキストに空白文字しか含まれていないかどうかをチェック.

詳しい調査に役立つリンク

36
yallam

StringUtils.isBlank()はnullもチェックしますが、これは

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

NullPointerExceptionがnullの場合、fooをスローします。

13
chut

StringUtils.isBlankはまた空白だけでtrueを返します。

isBlank(String str)

文字列が空白、空( "")、またはnullかどうかを確認します。

6
Octavia Togami

StringUtils.isBlank(foo)はあなたのためにnullチェックを実行します。 foo.isEmpty()を実行し、fooがnullの場合、NullPointerExceptionが発生します。

4
Default

StringUtils.isBlank()は、空白(単なる空白)およびNULL文字列についてもtrueを返します。実際にはCharシーケンスをトリミングしてからチェックを実行します。

StringUtils.isEmpty()は、Stringパラメータに文字シーケンスがない場合、またはStringパラメータがnullの場合にtrueを返します。違いは、Stringパラメータに空白のみが含まれている場合、isEmpty()がfalseを返すことです。空白は空でない状態と見なされます。

2
user4555388

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

どちらもisBlankが空白文字を処理する方法と同じコードを持っています。

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

これは、「String isBlank()Method」のGoogleでの最高の結果だからです。

Java 11以上を使用している場合は、 String class isBlank() メソッドを使用できます。このメソッドは、Apache Commons StringUtilsクラスと同じことを行います。

私はこのメソッドの例について小さな記事を書きました。それを読んでください here

0
Pankaj