StringUtils.isBlank()とString.isEmpty()


215

私は次のようなコードに遭遇しました:

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

これは機能的には次のように見えます。

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

2つの(org.apache.commons.lang3.StringUtils.isBlankjava.lang.String.isEmpty)の違いはありますか?


7
StringUtils.isEmpty(foo)同様にisBlank、nullポインタを回避するのに役立つが、空白文字をチェックしないaもあることに言及する価値があるかもしれません。
Xavi

回答:


380

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()


135

@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


14

StringUtils.isBlank() nullもチェックしますが、これは次のとおりです。

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

NullPointerExceptionif fooがnull をスローします。


4
それよりも大きな違いがあります。私の答えを見てください。
arshajii 2014年

3
これは誤りです。String.isEmpty()は、nullの場合、trueを返します。少なくともapache.commons.langバージョンについて話しているなら。春のバージョンはわかりません。
ryoung

1
私のコメントの意味は編集されました(公平にするために、最初からもっと明確にすることができました)。OPのvalue.isEmpty()にはむしろStringUtils.isBlank() -私はStringUtils.isEmpty()にStringUtils.isBlankを()と比較されなかった
chut

1
シュートの答えは正しいです。java String fooがnullの場合、foo.isEmpty()はNullPointerExceptionをスローします。ApacheのStringUtils.isBlank(foo)は、fooがnullであってもtrueを返します。
user2590805 2018年

6

StringUtils.isBlankまたtrue、空白のみを返します:

isBlank(文字列str)

文字列が空白、空( "")またはnullかどうかをチェックします。


5

StringUtils.isBlank(foo)nullチェックが実行されます。実行foo.isEmpty()fooてnullの場合、NullPointerExceptionが発生します。


それよりも大きな違いがあります。私の答えを見てください。
arshajii 14年

2

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

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


2

isBlank()とisEmpty()の唯一の違いは次のとおりです。

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

isBlankが空白をどのように処理するかは、どちらも同じコードです。おそらく、あなたが意図したisBlankStringは、空白を処理するためのコードを持っています。

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

サードパーティのlibを使用する代わりに、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

「String isBlank()メソッド」のGoogleでの最上位の結果であるため、これに答えています。

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

このメソッドの例についての小さな投稿を書きました。こちらを読んでください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.