はじめに
この実験では、Java で Character.isWhitespace()
メソッドを使用して文字が空白文字かどうかをチェックする方法を学びます。このメソッドが、スペース、タブ、改行、復帰文字などのさまざまな空白文字をどのように識別するかを調べます。
実践的な演習を通じて、スペース、タブ、および文字や数字などの非空白文字を含むさまざまな文字でこのメソッドをテストし、Java プログラミングにおけるその動作と実用的なアプリケーションを理解します。
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
この実験では、Java で Character.isWhitespace()
メソッドを使用して文字が空白文字かどうかをチェックする方法を学びます。このメソッドが、スペース、タブ、改行、復帰文字などのさまざまな空白文字をどのように識別するかを調べます。
実践的な演習を通じて、スペース、タブ、および文字や数字などの非空白文字を含むさまざまな文字でこのメソッドをテストし、Java プログラミングにおけるその動作と実用的なアプリケーションを理解します。
このステップでは、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 コードで空白文字を識別および処理するためのこのメソッドの実用的な応用を示しています。