Java で文字列が空白かどうかをチェックする方法

JavaJavaBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Java で文字列が空白かどうかをチェックする方法を学びます。Java 11 で導入された isBlank() メソッドを使って、文字列が空であるか、空白文字のみで構成されているかを効率的に判断します。

実践的な例を通じて、まず isBlank() を使って様々なタイプの文字列をチェックします。次に、isBlank() と null チェックを組み合わせて、堅牢な文字列検証を行う方法を学びます。最後に、isBlank()isEmpty() の動作を比較して、それらの主要な違いを理解します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/StringManipulationGroup(["String Manipulation"]) java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java/BasicSyntaxGroup -.-> java/if_else("If...Else") java/StringManipulationGroup -.-> java/strings("Strings") java/SystemandDataProcessingGroup -.-> java/string_methods("String Methods") subgraph Lab Skills java/if_else -.-> lab-559985{{"Java で文字列が空白かどうかをチェックする方法"}} java/strings -.-> lab-559985{{"Java で文字列が空白かどうかをチェックする方法"}} java/string_methods -.-> lab-559985{{"Java で文字列が空白かどうかをチェックする方法"}} end

isBlank() を使って空白文字列をチェックする

このステップでは、Java の isBlank() メソッドを使って文字列が空白かどうかをチェックする方法を学びます。空白文字列とは、空白文字(スペース、タブ、改行)のみで構成されるか、または空の文字列のことです。

isBlank() メソッドは Java 11 で導入され、空白文字列をチェックする便利な方法です。文字列が空であるか、空白文字のみで構成されている場合は true を返し、それ以外の場合は false を返します。

isBlank() メソッドを示すために、簡単な Java プログラムを作成しましょう。

  1. WebIDE エディタで HelloJava.java ファイルが開いていない場合は、開きます。

  2. ファイルの内容全体を次のコードに置き換えます。

    public class HelloJava {
        public static void main(String[] args) {
            String str1 = ""; // 空の文字列
            String str2 = "   "; // スペースのみの文字列
            String str3 = "Hello"; // 空白でない文字列
            String str4 = " Hello "; // 前後にスペースがある文字列
    
            System.out.println("Is str1 blank? " + str1.isBlank());
            System.out.println("Is str2 blank? " + str2.isBlank());
            System.out.println("Is str3 blank? " + str3.isBlank());
            System.out.println("Is str4 blank? " + str4.isBlank());
        }
    }

    このコードでは:

    • 空の文字列、スペースのみの文字列、空白でない文字列、前後にスペースがある文字列という 4 つの異なる文字列を宣言しています。
    • str.isBlank() を使って各文字列が空白かどうかをチェックし、結果を出力しています。
  3. ファイルを保存します(Ctrl+S または Cmd+S)。

  4. 次に、プログラムをコンパイルしましょう。WebIDE の下部にあるターミナルを開き、~/project ディレクトリにいることを確認します。もしそうでない場合は、cd ~/project コマンドを使って移動します。そして、javac コマンドを使ってコードをコンパイルします。

    javac HelloJava.java

    エラーがなければ、~/project ディレクトリに HelloJava.class ファイルが作成されます。

  5. 最後に、java コマンドを使ってコンパイルされたプログラムを実行します。

    java HelloJava

    次の出力が表示されるはずです。

    Is str1 blank? true
    Is str2 blank? true
    Is str3 blank? false
    Is str4 blank? false

    ご覧の通り、isBlank() は空の文字列 (str1) とスペースのみの文字列 (str2) を正しく空白と識別し、str3str4 は非空白文字を含むため非空白とみなされます。

isBlank() と null チェックを組み合わせる

前のステップでは、isBlank() を使って空文字列または空白文字のみの文字列をチェックする方法を学びました。ただし、文字列変数が null の場合、isBlank()NullPointerException をスローします。実際のアプリケーションでは null 文字列に遭遇することがよくあるため、適切に処理することが重要です。

文字列が null または空白かどうかを安全にチェックするには、null チェックと isBlank() メソッドを組み合わせる必要があります。これを行う最も一般的な方法は、if 文を使用することです。

if (str == null || str.isBlank()) {
    // 文字列は null または空白
} else {
    // 文字列は null でも空白でもない
}

プログラムを変更して、null 文字列を含め、その処理方法を示しましょう。

  1. WebIDE エディタで HelloJava.java ファイルを開きます。

  2. 現在のコードを次のコードに置き換えます。

    public class HelloJava {
        public static void main(String[] args) {
            String str1 = ""; // 空の文字列
            String str2 = "   "; // スペースのみの文字列
            String str3 = "Hello"; // 空白でない文字列
            String str4 = null; // null 文字列
    
            System.out.println("Is str1 null or blank? " + (str1 == null || str1.isBlank()));
            System.out.println("Is str2 null or blank? " + (str2 == null || str2.isBlank()));
            System.out.println("Is str3 null or blank? " + (str3 == null || str3.isBlank()));
            System.out.println("Is str4 null or blank? " + (str4 == null || str4.isBlank()));
        }
    }

    この更新されたコードでは:

    • null 文字列変数 str4 を追加しました。
    • str == null || str.isBlank() という条件を使って、各文字列が null または空白かどうかをチェックしています。|| 演算子は「または」を意味します。最初の部分 (str == null) が true の場合、2 番目の部分 (str.isBlank()) はチェックされず、NullPointerException を防ぎます。
  3. ファイルを保存します(Ctrl+S または Cmd+S)。

  4. ターミナルで変更したプログラムをコンパイルします。

    javac HelloJava.java
  5. コンパイルされたプログラムを実行します。

    java HelloJava

    次の出力が表示されるはずです。

    Is str1 null or blank? true
    Is str2 null or blank? true
    Is str3 null or blank? false
    Is str4 null or blank? true

    この出力から、組み合わせたチェックが空文字列、スペースのみの文字列、および null 文字列を「null または空白」と正しく識別し、空白でない文字列を「null でも空白でもない」と正しく識別していることがわかります。

null チェックと isBlank() を組み合わせることは、Java プログラムで様々な文字列の状態を処理する堅牢な方法です。

isBlank() と isEmpty() を比較する

前のステップでは、isBlank() を使って空文字列または空白文字のみの文字列をチェックしました。Java の isEmpty() メソッドについても耳にしたことがあるかもしれません。このステップでは、isBlank()isEmpty() を比較して、それらの違いを理解します。

isEmpty() メソッドは Java 1.0 から利用可能です。文字列の長さが 0 の場合(つまり、空文字列 "" の場合)のみ true を返します。空白文字のみを含む文字列を含む他の文字列については false を返します。

プログラムを最後に一度変更して、isBlank()isEmpty() の両方を使い、異なるタイプの文字列に対する動作を確認しましょう。

  1. WebIDE エディタで HelloJava.java ファイルを開きます。

  2. 現在のコードを次のコードに置き換えます。

    public class HelloJava {
        public static void main(String[] args) {
            String str1 = ""; // 空の文字列
            String str2 = "   "; // スペースのみの文字列
            String str3 = "Hello"; // 空白でない文字列
            String str4 = null; // null 文字列
    
            System.out.println("--- Using isBlank() ---");
            System.out.println("Is str1 blank? " + (str1 == null || str1.isBlank()));
            System.out.println("Is str2 blank? " + (str2 == null || str2.isBlank()));
            System.out.println("Is str3 blank? " + (str3 == null || str3.isBlank()));
            // 注意:isBlank() を呼び出す前に null チェックが必要です
            System.out.println("Is str4 blank? " + (str4 == null || str4.isBlank()));
    
            System.out.println("\n--- Using isEmpty() ---");
            // 注意:isEmpty() を呼び出す前に null チェックが必要です
            System.out.println("Is str1 empty? " + (str1 == null || str1.isEmpty()));
            System.out.println("Is str2 empty? " + (str2 == null || str2.isEmpty()));
            System.out.println("Is str3 empty? " + (str3 == null || str3.isEmpty()));
            System.out.println("Is str4 empty? " + (str4 == null || str4.isEmpty()));
        }
    }

    このコードでは:

    • isBlank()isEmpty() の両方を示すセクションを追加しました。
    • isBlank()isEmpty() の両方を呼び出す前に、組み合わせた null チェック (str == null || ...) を使用して、NullPointerException を防いでいます。
  3. ファイルを保存します(Ctrl+S または Cmd+S)。

  4. ターミナルでプログラムをコンパイルします。

    javac HelloJava.java
  5. コンパイルされたプログラムを実行します。

    java HelloJava

    次の出力が表示されるはずです。

    --- Using isBlank() ---
    Is str1 blank? true
    Is str2 blank? true
    Is str3 blank? false
    Is str4 blank? true
    
    --- Using isEmpty() ---
    Is str1 empty? true
    Is str2 empty? false
    Is str3 empty? false
    Is str4 empty? true

    出力から、主な違いを確認できます。

    • isBlank() は空文字列 ("") と空白文字のみの文字列 (" ") の両方に対して true を返します。
    • isEmpty() は空文字列 ("") に対してのみ true を返します。空白文字のみの文字列 (" ") に対しては false を返します。

    どちらのメソッドも、潜在的に null の文字列に対して呼び出す前に null チェックが必要です。

まとめると:

  • 文字列の長さが 0 かどうかのみをチェックしたい場合は、isEmpty() を使用します。
  • 文字列が空であるか、空白文字のみを含むかをチェックしたい場合は、isBlank() を使用します。

これら 2 つのメソッドの違いを理解することは、Java で正しく堅牢な文字列処理コードを書くために重要です。

まとめ

この実験では、Java 11 で導入された isBlank() メソッドを使用して、Java で文字列が空白かどうかをチェックする方法を学びました。空文字列、空白文字のみの文字列、および内容を持つ文字列など、さまざまなタイプの文字列に対して isBlank() を使用する練習を行いました。また、isBlank() の機能を示すために、簡単な Java プログラムをコンパイルして実行しました。