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

JavaJavaBeginner
今すぐ練習

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

はじめに

この実験では、Java で Character.isWhitespace() メソッドを使用して文字が空白文字かどうかをチェックする方法を学びます。このメソッドが、スペース、タブ、改行、復帰文字などのさまざまな空白文字をどのように識別するかを調べます。

実践的な演習を通じて、スペース、タブ、および文字や数字などの非空白文字を含むさまざまな文字でこのメソッドをテストし、Java プログラミングにおけるその動作と実用的なアプリケーションを理解します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/StringManipulationGroup(["String Manipulation"]) java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) java/BasicSyntaxGroup -.-> java/data_types("Data Types") java/BasicSyntaxGroup -.-> java/operators("Operators") java/BasicSyntaxGroup -.-> java/for_loop("For Loop") java/StringManipulationGroup -.-> java/strings("Strings") java/SystemandDataProcessingGroup -.-> java/object_methods("Object Methods") subgraph Lab Skills java/data_types -.-> lab-559939{{"Java で文字が空白文字かどうかをチェックする方法"}} java/operators -.-> lab-559939{{"Java で文字が空白文字かどうかをチェックする方法"}} java/for_loop -.-> lab-559939{{"Java で文字が空白文字かどうかをチェックする方法"}} java/strings -.-> lab-559939{{"Java で文字が空白文字かどうかをチェックする方法"}} java/object_methods -.-> lab-559939{{"Java で文字が空白文字かどうかをチェックする方法"}} end

Character.isWhitespace() メソッドの使用

このステップでは、Java の Character.isWhitespace() メソッドの使い方を学びます。このメソッドは Character クラスの一部で、指定された文字が空白文字かどうかを判定するために使用されます。空白文字には、スペース、タブ、改行、復帰文字などが含まれます。

空白文字を識別する方法を理解することは、テキストの解析、入力の検証、出力の整形など、多くのプログラミングタスクで役立ちます。

このメソッドを実験するために、新しい Java ファイルを作成しましょう。

  1. WebIDE が開いていない場合は、開きます。

  2. 左側のファイルエクスプローラーで、~/project ディレクトリにいることを確認します。

  3. ~/project ディレクトリ内の空白部分を右クリックし、「New File」を選択します。

  4. 新しいファイルの名前を WhitespaceChecker.java にします。

  5. エディターで WhitespaceChecker.java ファイルを開きます。

  6. 次の Java コードをエディターにコピーして貼り付けます。

    public class WhitespaceChecker {
        public static void main(String[] args) {
            char space = ' ';
            char tab = '\t';
            char newline = '\n';
            char letter = 'a';
            char digit = '1';
    
            System.out.println("Is '" + space + "' whitespace? " + Character.isWhitespace(space));
            System.out.println("Is '" + tab + "' whitespace? " + Character.isWhitespace(tab));
            System.out.println("Is '" + newline + "' whitespace? " + Character.isWhitespace(newline));
            System.out.println("Is '" + letter + "' whitespace? " + Character.isWhitespace(letter));
            System.out.println("Is '" + digit + "' whitespace? " + Character.isWhitespace(digit));
        }
    }

    このコードの新しい部分を見てみましょう。

    • char space = ' ';: これは char 型の space という名前の変数を宣言し、それにスペース文字を割り当てます。
    • char tab = '\t';: これは tab という名前の変数を宣言し、それにタブ文字を割り当てます。\t はタブを表すエスケープシーケンスです。
    • char newline = '\n';: これは newline という名前の変数を宣言し、それに改行文字を割り当てます。\n は改行を表すエスケープシーケンスです。
    • char letter = 'a';: これは letter という名前の変数を宣言し、それに文字 'a' を割り当てます。
    • char digit = '1';: これは digit という名前の変数を宣言し、それに文字 '1' を割り当てます。
    • Character.isWhitespace(space): ここで isWhitespace() メソッドを呼び出しています。space 文字を渡し、その文字が空白文字の場合は true を返し、そうでない場合は false を返します。他の文字についても同じことを行います。
    • System.out.println(...): println を使用して、isWhitespace() メソッドの呼び出し結果と説明メッセージを出力します。
  7. WhitespaceChecker.java ファイルを保存します(Ctrl+S または Cmd+S)。

コードを書いたので、コンパイルして実行し、出力を確認する必要があります。

  1. WebIDE の下部にあるターミナルを開きます。~/project ディレクトリにいることを確認します。

  2. javac コマンドを使用して Java プログラムをコンパイルします。

    javac WhitespaceChecker.java

    エラーがなければ、このコマンドによって ~/project ディレクトリに WhitespaceChecker.class ファイルが作成されます。

  3. java コマンドを使用してコンパイルされた Java プログラムを実行します。

    java WhitespaceChecker

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

    Is ' ' whitespace? true
    Is '	' whitespace? true
    Is '
    ' whitespace? true
    Is 'a' whitespace? false
    Is '1' whitespace? false

    この出力は、isWhitespace() メソッドがスペース、タブ、改行文字を空白文字として正しく識別し、文字と数字を非空白文字として識別したことを示しています。

Character.isWhitespace() メソッドを使用して、さまざまな文字をチェックすることに成功しました。次のステップでは、このメソッドをさらに多くの例でテストし、さまざまな種類の空白文字を含めます。

スペースとタブでのテスト

前のステップでは、単一のスペースと単一のタブ文字を使って Character.isWhitespace() を使用しました。このステップでは、複数のスペースとタブを含む文字列でこのメソッドをさらにテストし、その動作を確認します。

Character.isWhitespace() は個々の文字に対して動作し、文字列全体では動作しないことを覚えておいてください。文字列が空白文字のみを含むかどうかをチェックしたり、文字列内の空白文字を処理したりするには、通常、文字列を 1 文字ずつ繰り返し処理し、各文字に isWhitespace() メソッドを適用します。

WhitespaceChecker.java ファイルを変更して、複数のスペースとタブを含むテストを追加しましょう。

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

  2. 既存のコードを次の更新されたコードに置き換えます。

    public class WhitespaceChecker {
        public static void main(String[] args) {
            char space = ' ';
            char tab = '\t';
            char newline = '\n';
            char letter = 'a';
            char digit = '1';
    
            System.out.println("Is '" + space + "' whitespace? " + Character.isWhitespace(space));
            System.out.println("Is '" + tab + "' whitespace? " + Character.isWhitespace(tab));
            System.out.println("Is '" + newline + "' whitespace? " + Character.isWhitespace(newline));
            System.out.println("Is '" + letter + "' whitespace? " + Character.isWhitespace(letter));
            System.out.println("Is '" + digit + "' whitespace? " + Character.isWhitespace(digit));
    
            System.out.println("\nTesting with multiple characters:");
    
            String testString1 = "   "; // Three spaces
            String testString2 = "\t\t"; // Two tabs
            String testString3 = "  \t  "; // Spaces and tabs
            String testString4 = "Hello World"; // Contains space, but also letters
    
            System.out.println("Checking characters in: \"" + testString1 + "\"");
            for (int i = 0; i < testString1.length(); i++) {
                char c = testString1.charAt(i);
                System.out.println("  Is '" + (c == ' ' ? " " : (c == '\t' ? "\\t" : c)) + "' whitespace? " + Character.isWhitespace(c));
            }
    
            System.out.println("Checking characters in: \"" + testString2 + "\"");
            for (int i = 0; i < testString2.length(); i++) {
                char c = testString2.charAt(i);
                 System.out.println("  Is '" + (c == ' ' ? " " : (c == '\t' ? "\\t" : c)) + "' whitespace? " + Character.isWhitespace(c));
            }
    
            System.out.println("Checking characters in: \"" + testString3 + "\"");
            for (int i = 0; i < testString3.length(); i++) {
                char c = testString3.charAt(i);
                 System.out.println("  Is '" + (c == ' ' ? " " : (c == '\t' ? "\\t" : c)) + "' whitespace? " + Character.isWhitespace(c));
            }
    
             System.out.println("Checking characters in: \"" + testString4 + "\"");
            for (int i = 0; i < testString4.length(); i++) {
                char c = testString4.charAt(i);
                 System.out.println("  Is '" + (c == ' ' ? " " : (c == '\t' ? "\\t" : c)) + "' whitespace? " + Character.isWhitespace(c));
            }
        }
    }

    新しいコードの詳細を見てみましょう。

    • String testString1 = " ";: 3 つのスペース文字を含む文字列を作成します。
    • String testString2 = "\t\t";: 2 つのタブ文字を含む文字列を作成します。
    • String testString3 = " \t ";: スペースとタブが混在した文字列を作成します。
    • String testString4 = "Hello World";: 文字とスペースを含む文字列を作成します。
    • for (int i = 0; i < testString1.length(); i++): これは文字列の各文字を繰り返し処理する for ループです。
    • char c = testString1.charAt(i);: ループ内で、charAt(i) は現在のインデックス i の文字を取得し、c 変数に格納します。
    • System.out.println(" Is '" + (c == ' ' ? " " : (c == '\t' ? "\\t" : c)) + "' whitespace? " + Character.isWhitespace(c));: この行は、Character.isWhitespace(c) を使用して現在の文字 c が空白文字かどうかを出力します。(c == ' ' ? " " : (c == '\t' ? "\\t" : c)) の部分は、出力でスペースとタブ文字を可視化するために使用される三項演算子です。
  3. WhitespaceChecker.java ファイルを保存します。

では、更新されたプログラムをコンパイルして実行しましょう。

  1. WebIDE の下部にあるターミナルを開きます。~/project ディレクトリにいることを確認します。

  2. Java プログラムをコンパイルします。

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

    java WhitespaceChecker

    テスト文字列内の各文字の結果を含む、次のような出力が表示されるはずです。

    Is ' ' whitespace? true
    Is '	' whitespace? true
    Is '
    ' whitespace? true
    Is 'a' whitespace? false
    Is '1' whitespace? false
    
    Testing with multiple characters:
    Checking characters in: "   "
      Is ' ' whitespace? true
      Is ' ' whitespace? true
      Is ' ' whitespace? true
    Checking characters in: "		"
      Is '\t' whitespace? true
      Is '\t' whitespace? true
    Checking characters in: "  	  "
      Is ' ' whitespace? true
      Is ' ' whitespace? true
      Is '\t' whitespace? true
      Is ' ' whitespace? true
      Is ' ' whitespace? true
    Checking characters in: "Hello World"
      Is 'H' whitespace? false
      Is 'e' whitespace? false
      Is 'l' whitespace? false
      Is 'l' whitespace? false
      Is 'o' whitespace? false
      Is ' ' whitespace? true
      Is 'W' whitespace? false
      Is 'o' whitespace? false
      Is 'r' whitespace? false
      Is 'l' whitespace? false
      Is 'd' whitespace? false

    この出力は、Character.isWhitespace() が文字列内の個々のスペースとタブ文字を、連続して出現する場合や他の文字と混在する場合でも正しく識別することを確認しています。

文字を繰り返し処理することで、複数のスペースとタブを含む文字列で Character.isWhitespace() を正常にテストしました。次のステップでは、このメソッドが非空白文字をどのように扱うかを見ていきます。

非空白文字の扱い

前のステップでは、Character.isWhitespace() を使用して空白文字を識別することに焦点を当てました。今度は、このメソッドが空白文字と見なされない文字をどのように扱うかを明示的に示しましょう。これにより、このメソッドが何を識別し、何を識別しないかについての理解が深まります。

前の例ではすでにいくつかの非空白文字('a' や '1' など)を含めていましたが、WhitespaceChecker.java ファイルにさらに多様な例を追加しましょう。

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

  2. main メソッド内の既存の System.out.println 文の後、文字列の繰り返し処理を行うループの前に、次のコード行を追加します。System.out.println("Is '" + digit + "' whitespace? " + Character.isWhitespace(digit)); の行の後に追加することができます。

            char punctuation = '.';
            char symbol = '$';
            char controlChar = '\u0000'; // Null character
    
            System.out.println("Is '" + punctuation + "' whitespace? " + Character.isWhitespace(punctuation));
            System.out.println("Is '" + symbol + "' whitespace? " + Character.isWhitespace(symbol));
            System.out.println("Is U+0000 whitespace? " + Character.isWhitespace(controlChar)); // Printing control chars might not display correctly

    追加した新しい文字を見てみましょう。

    • char punctuation = '.';: 句読点です。
    • char symbol = '$';: 記号文字です。
    • char controlChar = '\u0000';: これはヌル文字の Unicode エスケープシーケンスで、制御文字です。Character.isWhitespace() は、Unicode 標準で空白文字と見なされる特定の制御文字もチェックします。
  3. WhitespaceChecker.java ファイルを保存します。

では、更新されたプログラムをコンパイルして実行し、これらの新しい文字の出力を確認しましょう。

  1. WebIDE の下部にあるターミナルを開きます。~/project ディレクトリにいることを確認します。

  2. Java プログラムをコンパイルします。

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

    java WhitespaceChecker

    新しい文字の結果を含む、次のような出力が表示されるはずです。

    Is ' ' whitespace? true
    Is '	' whitespace? true
    Is '
    ' whitespace? true
    Is 'a' whitespace? false
    Is '1' whitespace? false
    Is '.' whitespace? false
    Is '$' whitespace? false
    Is U+0000 whitespace? false
    
    Testing with multiple characters:
    Checking characters in: "   "
      Is ' ' whitespace? true
      Is ' ' whitespace? true
      Is ' ' whitespace? true
    Checking characters in: "		"
      Is '\t' whitespace? true
      Is '\t' whitespace? true
    Checking characters in: "  	  "
      Is ' ' whitespace? true
      Is ' ' whitespace? true
      Is '\t' whitespace? true
      Is ' ' whitespace? true
      Is ' ' whitespace? true
    Checking characters in: "Hello World"
      Is 'H' whitespace? false
      Is 'e' whitespace? false
      Is 'l' whitespace? false
      Is 'l' whitespace? false
      Is 'o' whitespace? false
      Is ' ' whitespace? true
      Is 'W' whitespace? false
      Is 'o' whitespace? false
      Is 'r' whitespace? false
      Is 'l' whitespace? false
      Is 'd' whitespace? false

    出力からわかるように、句読点 ('.') と記号 ('$') は非空白文字として正しく識別されています。ヌル文字 (\u0000) も Character.isWhitespace() によって非空白文字として識別されています。このメソッドは、Unicode 標準で空白文字として定義されている文字を具体的にチェックします。これには、スペース、タブ、改行、復帰、改ページ (\f)、およびその他の特定の制御文字と空白区切り文字が含まれます。

これで、Character.isWhitespace() が標準的な空白文字や、句読点、記号、制御文字などの非空白文字を含むさまざまな種類の文字に対してどのように動作するかを確認しました。これで Character.isWhitespace() メソッドの探索は完了です。

まとめ

この実験では、Java で Character.isWhitespace() メソッドを使用して文字が空白文字かどうかをチェックする方法を学びました。このメソッドがスペース、タブ、改行などの一般的な空白文字をどのように識別するかを調べました。

スペース、タブ、および文字や数字などの非空白文字を含むさまざまな文字が空白文字として分類されるかどうかをテストする簡単な Java プログラムを作成することで、Character.isWhitespace() メソッドの使用を練習しました。この実践的な演習は、Java コードで空白文字を識別および処理するためのこのメソッドの実用的な応用を示しています。