Javaで空または空の文字列を確認する

1. 前書き

このチュートリアルでは、Javaで空または空の文字列を確認するいくつかの方法を説明します。 いくつかのネイティブ言語アプローチといくつかのライブラリがあります。

2. 空対 ブランク

もちろん、文字列が空か空かを知ることはかなり一般的ですが、定義と同じページにいることを確認しましょう。
_null_または_any_の長さのない文字列の場合、文字列は_empty_と見なされます。 文字列が空白のみで構成されている場合、_blank_と呼びます。
Javaの場合、空白はスペース、タブなどの文字です。 例については、https://docs.oracle.com/javase/8/docs/api/java/lang/Character.html#isWhitespace-char- [_Character.isWhitespace_]をご覧ください。

3. 空の文字列

3.1. Java 6以降で

少なくともJava 6を使用している場合、_empty_文字列をチェックする最も簡単な方法はhttps://docs.oracle.com/javase/8/docs/api/java/lang/String.html#isEmpty-- [ _String#isEmpty_]:
boolean isEmptyString(String string) {
    return string.isEmpty();
}
nullセーフにするために、追加のチェックを追加する必要があります。
boolean isEmptyString(String string) {
    return string == null || string.isEmpty();
}

3.2. Java 5以下で

_String#isEmpty_はJava 6で導入されました。 Java 5以下では、代わりに_String#length_を使用できます。
boolean isEmptyString(String string) {
    return string == null || string.length() == 0;
}
実際、* _ St​​ring#isEmpty_は_String#length_への単なるショートカットです。*

4. 空白の文字列

_String#isEmpty_と_String#length_の両方を使用して、_empty_文字列を確認できます。
_blank_文字列も検出したい場合は、_String#trim_を使用してこれを実現できます。 *チェックを実行する前に、先頭と末尾の空白をすべて削除します*。
boolean isBlankString(String string) {
    return string == null || string.trim().isEmpty();
}
正確に言うと、_String#trim_はhttps://en.wikipedia.org/wiki/List_of_Unicode_characters#Control_codes[U+0020以下のUnicodeコード]を持つすべての先行文字と後続文字を削除します。
また、__ String__sは不変であるため、___ trim ___を呼び出しても、基になる文字列は実際には変更されないことに注意してください。

5. Beanの検証

_blank_文字列をチェックする別の方法は、正規表現です。 これは、たとえばlink:/javax-validation[Java Bean Validation]を使用すると便利です。
@Pattern(regexp = "\\A(?!\\s*\\Z).+")
String someString;
指定された正規表現は、空または空の文字列が検証されないようにします。

6. Apache Commonsを使用

依存関係を追加してもよい場合は、https://commons.apache.org/proper/commons-lang/ [Apache Commons Lang]を使用できます。 これには、Javaのヘルパーが多数あります。
Mavenを使用する場合、https://search.maven.org/search?q = g:org.apache.commons%20AND%20a:commons-lang3 [the _commons-lang3_依存関係]をpomに追加する必要があります。
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
</dependency>
とりわけ、これによりhttps://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html[_StringUtils_]が提供されます。
このクラスには、https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#isEmpty-java.lang.CharSequence- [_isEmpty_]、https:などのメソッドが付属しています。 //commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#isBlank-java.lang.CharSequence-[_isBlank_]など:
StringUtils.isBlank(string)
この呼び出しは、独自の_isBlankString_メソッドと同じです。 nullセーフであり、空白もチェックします。

7. グアバと

特定の文字列関連ユーティリティを提供するもう1つの有名なライブラリは、Googleのhttps://github.com/google/guava[Guava]です。 バージョン23.1以降、グアバには2つのフレーバーがあります:_android_と_jre_。 AndroidフレーバーはAndroidとJava 7を対象としていますが、JREフレーバーはJava 8を対象としています。
Androidをターゲットにしていない場合は、https://search.maven.org/artifact/com.google.guava/guava/28.0-jre/jar [JREフレーバー]をpomに追加するだけです。
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>28.0-jre</version>
</dependency>
Guavas Stringsクラスには、メソッドhttps://google.github.io/guava/releases/27.1-jre/api/docs/com/google/common/base/Strings.html#isNullOrEmpty-java.lang.String- [ _Strings.isNullOrEmpty_]:
Strings.isNullOrEmpty(string)
指定された文字列がnullまたは空かどうかをチェックしますが、*空白のみの文字列はチェックしません*。

8. 結論

文字列が空かどうかを確認する方法はいくつかあります。 多くの場合、文字列が空白かどうか、つまり空白文字のみで構成されているかどうかも確認します。
最も便利な方法は、_StringUtils.isBlank_などのヘルパーを提供するApache Commons Langを使用することです。 単純なJavaに固執したい場合は、_String#trim_と_String#isEmpty_または_String#length_の組み合わせを使用できます。 Bean Validationでは、代わりに正規表現を使用できます。
これらのサンプルはすべてhttps://github.com/eugenp/tutorials/tree/master/java-strings-2[GitHub上]で確認してください。