はじめに
この実験では、Java で Character.isWhitespace() メソッドを使用して文字が空白文字かどうかをチェックする方法を学びます。このメソッドが、スペース、タブ、改行、復帰文字などのさまざまな空白文字をどのように識別するかを調べます。
実践的な演習を通じて、スペース、タブ、および文字や数字などの非空白文字を含むさまざまな文字でこのメソッドをテストし、Java プログラミングにおけるその動作と実用的なアプリケーションを理解します。
Character.isWhitespace() メソッドを使用する
このステップでは、Java の Character.isWhitespace() メソッドの使い方を学びます。このメソッドは Character クラスの一部で、指定された文字が空白文字かどうかを判定するために使用されます。空白文字には、スペース、タブ、改行、復帰文字などが含まれます。
空白文字を識別する方法を理解することは、テキストの解析、入力の検証、出力の整形など、多くのプログラミングタスクで役立ちます。
このメソッドを実験するために、新しい Java ファイルを作成しましょう。
WebIDE が開いていない場合は、開きます。
左側のファイルエクスプローラーで、
~/projectディレクトリにいることを確認します。~/projectディレクトリ内の空白部分を右クリックし、「New File」を選択します。新しいファイルの名前を
WhitespaceChecker.javaにします。エディターで
WhitespaceChecker.javaファイルを開きます。次の 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()メソッドの呼び出し結果と説明メッセージを出力します。
WhitespaceChecker.javaファイルを保存します(Ctrl+S または Cmd+S)。
コードを書いたので、コンパイルして実行し、出力を確認する必要があります。
WebIDE の下部にあるターミナルを開きます。
~/projectディレクトリにいることを確認します。javacコマンドを使用して Java プログラムをコンパイルします。javac WhitespaceChecker.javaエラーがなければ、このコマンドによって
~/projectディレクトリにWhitespaceChecker.classファイルが作成されます。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 ファイルを変更して、複数のスペースとタブを含むテストを追加しましょう。
WebIDE のエディターで
WhitespaceChecker.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)); 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))の部分は、出力でスペースとタブ文字を可視化するために使用される三項演算子です。
WhitespaceChecker.javaファイルを保存します。
では、更新されたプログラムをコンパイルして実行しましょう。
WebIDE の下部にあるターミナルを開きます。
~/projectディレクトリにいることを確認します。Java プログラムをコンパイルします。
javac WhitespaceChecker.javaコンパイルされた 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 ファイルにさらに多様な例を追加しましょう。
WebIDE のエディターで
WhitespaceChecker.javaファイルを開きます。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 標準で空白文字と見なされる特定の制御文字もチェックします。
WhitespaceChecker.javaファイルを保存します。
では、更新されたプログラムをコンパイルして実行し、これらの新しい文字の出力を確認しましょう。
WebIDE の下部にあるターミナルを開きます。
~/projectディレクトリにいることを確認します。Java プログラムをコンパイルします。
javac WhitespaceChecker.javaコンパイルされた 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 コードで空白文字を識別および処理するためのこのメソッドの実用的な応用を示しています。



