289

次のようなコードに遭遇しました。

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.isBlank2つの(と)の違いはありjava.lang.String.isEmptyますか?

4

12 に答える 12

539

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

リンクされたドキュメントから:

String が空白、空 ("")、または 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.Stringtrue .isEmpty() は、 for を返さないことを除いて同じように機能しnullます。

java.lang.String.isBlank()(Java 11 以降)

java.lang.String.isEmpty()

于 2014-05-02T00:54:59.180 に答える
157

@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
于 2017-03-31T21:42:03.963 に答える
49

StringUtils isEmpty = String isEmptyチェック + null のチェック。

StringUtils isBlank = StringUtils isEmptyチェック + テキストに空白文字のみが含まれているかどうかをチェックします。

詳細な調査に役立つリンク:

于 2014-09-26T13:13:51.463 に答える
18

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

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

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

于 2014-05-02T00:53:03.573 に答える
8

StringUtils.isBlanktrueまた、空白のみを返します。

isBlank(文字列 str)

String が空白、空 ("")、または null であるかどうかを確認します。

于 2014-05-02T00:54:55.177 に答える
6

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

于 2014-05-02T00:53:13.473 に答える
5

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

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

于 2015-02-11T15:15:31.970 に答える
2
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;
}
于 2016-04-13T07:47:22.897 に答える