はじめに
この実験では、Java で文字列が小文字かどうかをチェックする方法を学びます。toLowerCase() と equalsIgnoreCase() を使用して大文字小文字を無視しながら文字列を比較する方法から始めて、これを達成するためのさまざまな方法を探ります。
次に、文字列の各文字を個別にチェックするために、文字列を反復処理して Character.isLowerCase() を使用する方法を学びます。最後に、このチェックを実行する際に非文字の文字をどのように扱うかを説明します。
toLowerCase() を使った文字列の比較
このステップでは、Java で文字の大文字小文字を無視して文字列を比較する方法を学びます。これは、2 つの文字列が大文字または小文字を使用しているかどうかに関係なく同じであるかどうかをチェックしたい場合の一般的なタスクです。
これを練習するために、新しい Java ファイルを作成しましょう。
WebIDE が開いていない場合は、開きます。
左側のファイルエクスプローラーで、
~/projectディレクトリにいることを確認します。ファイルエクスプローラーの空白部分を右クリックし、「新しいファイル」を選択して、
CaseInsensitiveCompare.javaと名付けます。エディターで
CaseInsensitiveCompare.javaファイルを開きます。次のコードをエディターにコピーして貼り付けます。
public class CaseInsensitiveCompare { public static void main(String[] args) { String str1 = "Hello"; String str2 = "hello"; String str3 = "World"; // Comparing strings directly (case-sensitive) boolean areEqualCaseSensitive = str1.equals(str2); System.out.println("Case-sensitive comparison of \"" + str1 + "\" and \"" + str2 + "\": " + areEqualCaseSensitive); // Comparing strings ignoring case boolean areEqualCaseInsensitive = str1.equalsIgnoreCase(str2); System.out.println("Case-insensitive comparison of \"" + str1 + "\" and \"" + str2 + "\": " + areEqualCaseInsensitive); // Comparing str1 and str3 ignoring case boolean areEqualStr1Str3 = str1.equalsIgnoreCase(str3); System.out.println("Case-insensitive comparison of \"" + str1 + "\" and \"" + str3 + "\": " + areEqualStr1Str3); } }このコードでは:
- 3 つの
String変数str1、str2、str3を宣言しています。 str1.equals(str2)は大文字小文字を区別した比較を行います。「Hello」と「hello」は大文字の 'H' のために異なるため、falseを返します。str1.equalsIgnoreCase(str2)は大文字小文字を無視した比較を行います。大文字小文字を無視すると「Hello」と「hello」は同じであるため、trueを返します。str1とstr3を大文字小文字を無視して比較し、異なる単語は依然として異なると見なされることを示しています。
- 3 つの
ファイルを保存します(Ctrl+S または Cmd+S)。
WebIDE の下部にあるターミナルを開きます。
~/projectディレクトリにいることを確認します。javacコマンドを使用して Java プログラムをコンパイルします。javac CaseInsensitiveCompare.javaエラーがなければ、何も出力されません。
~/projectディレクトリにCaseInsensitiveCompare.classファイルが作成されます。javaコマンドを使用してコンパイルされた Java プログラムを実行します。java CaseInsensitiveCompare次の出力が表示されるはずです。
Case-sensitive comparison of "Hello" and "hello": false Case-insensitive comparison of "Hello" and "hello": true Case-insensitive comparison of "Hello" and "World": falseこの出力は、
equals()が大文字小文字を区別するのに対し、equalsIgnoreCase()は大文字小文字を無視することを確認しています。
equalsIgnoreCase() を使用すると、文字が大文字か小文字かを気にせずに文字列を比較する便利な方法です。
ループ内で Character.isLowerCase() を使用する
前のステップでは、大文字小文字を無視して文字列全体を比較する方法を学びました。時には、文字列内の個々の文字を調べ、それが小文字か大文字かをチェックする必要がある場合があります。Java では、Character クラスにこのための便利なメソッドが用意されています。
このステップでは、ループ内で Character.isLowerCase() メソッドを使用して、文字列内の小文字の数をカウントします。
WebIDE が開いていない場合は、開きます。
左側のファイルエクスプローラーで、
~/projectディレクトリにいることを確認します。~/projectディレクトリにCountLowercase.javaという名前の新しいファイルを作成します。エディターで
CountLowercase.javaファイルを開きます。次のコードをエディターにコピーして貼り付けます。
public class CountLowercase { public static void main(String[] args) { String text = "Hello World 123!"; int lowercaseCount = 0; // Loop through each character in the string for (int i = 0; i < text.length(); i++) { char character = text.charAt(i); // Get the character at the current index // Check if the character is a lowercase letter if (Character.isLowerCase(character)) { lowercaseCount++; // Increment the counter if it's lowercase } } System.out.println("The string is: \"" + text + "\""); System.out.println("Number of lowercase letters: " + lowercaseCount); } }このコードを分解してみましょう。
- 大文字、小文字、数字、記号が混在した
String型の変数textがあります。 - 整数型の変数
lowercaseCountを 0 で初期化します。この変数は小文字の数を格納します。 forループを使用して、文字列の各文字を反復処理します。ループはインデックス 0 から文字列の長さ(ただし、文字列の長さは含まない)まで実行されます。text.charAt(i)は、現在のインデックスiの文字を取得します。Character.isLowerCase(character)は、与えられたcharacterが小文字の場合にtrueを返し、それ以外の場合はfalseを返すメソッドです。Character.isLowerCase()がtrueを返す場合、lowercaseCountをインクリメントします。- 最後に、元の文字列と小文字の総数を出力します。
- 大文字、小文字、数字、記号が混在した
ファイルを保存します(Ctrl+S または Cmd+S)。
WebIDE の下部にあるターミナルを開きます。
~/projectディレクトリにいることを確認します。Java プログラムをコンパイルします。
javac CountLowercase.javaコンパイルが成功すると、
CountLowercase.classファイルが作成されます。コンパイルされた Java プログラムを実行します。
java CountLowercase次の出力が表示されるはずです。
The string is: "Hello World 123!" Number of lowercase letters: 8この出力は、文字列 "Hello World 123!" には 8 つの小文字('e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd')が含まれていることを示しています。
ループ内で Character.isLowerCase() を使用することで、文字列の文字ごとの分析を行うことができ、さまざまなテキスト処理タスクに役立ちます。
文字以外の文字を無視する
前のステップでは、小文字の文字をカウントしました。しかし、文字列には数字、空白、記号などの様々な文字が含まれることがあります。文字列の比較や内容の分析を行う際には、これらの非文字の文字を無視したいことが多いです。
このステップでは、プログラムを修正して、文字のみを処理し、それ以外のすべての文字を無視するようにします。このために Character.isLetter() メソッドを使用します。
WebIDE が開いていない場合は、開きます。
前のステップで作成した
CountLowercase.javaファイルを開きます。文字が小文字かどうかをチェックする前に、その文字が文字であるかどうかをチェックするようにコードを修正します。既存のコードを次のコードに置き換えます。
public class CountLowercase { public static void main(String[] args) { String text = "Hello World 123!"; int lowercaseCount = 0; StringBuilder lettersOnly = new StringBuilder(); // To store only letter characters // Loop through each character in the string for (int i = 0; i < text.length(); i++) { char character = text.charAt(i); // Get the character at the current index // Check if the character is a letter if (Character.isLetter(character)) { lettersOnly.append(character); // Add the letter to our new string // Check if the letter is lowercase if (Character.isLowerCase(character)) { lowercaseCount++; // Increment the counter if it's lowercase } } } System.out.println("The original string is: \"" + text + "\""); System.out.println("Letters only string: \"" + lettersOnly.toString() + "\""); System.out.println("Number of lowercase letters (ignoring non-letters): " + lowercaseCount); } }追加と変更した部分は次の通りです。
lettersOnlyというStringBuilderを導入しました。StringBuilderは、特にループ内で文字を追加する場合に、効率的に文字列を構築するために使用されます。- ループ内に
if (Character.isLetter(character))条件を追加しました。これは、現在のcharacterが文字(大文字または小文字)であるかどうかをチェックします。 - 文字が文字である場合、
lettersOnly.append(character)を使用してlettersOnlyのStringBuilderに追加します。 Character.isLowerCase(character)のチェックは、Character.isLetter()のチェックの中にネストされるようになりました。これにより、実際の文字の中でのみ小文字の文字をカウントするようになります。- 最後に、元の文字列、文字のみを含む文字列、およびそれらの文字の中の小文字の文字のカウントを出力します。
ファイルを保存します(Ctrl+S または Cmd+S)。
WebIDE の下部にあるターミナルを開きます。
~/projectディレクトリにいることを確認します。修正した Java プログラムをコンパイルします。
javac CountLowercase.javaコンパイルエラーがないことを確認します。
コンパイルされた Java プログラムを実行します。
java CountLowercase次の出力が表示されるはずです。
The original string is: "Hello World 123!" Letters only string: "HelloWorld" Number of lowercase letters (ignoring non-letters): 8「Letters only string」には現在 "HelloWorld" のみが含まれ、小文字のカウントは依然として 8 であることに注意してください。これは、実際の文字の中でのみ小文字の文字をカウントしているからです。
Character.isLetter() を使用すると、文字列から非アルファベット文字をフィルタリングしてからさらに処理する際に非常に便利です。
まとめ
この実験では、Java で文字列が小文字かどうかをチェックする方法を学びました。主に 2 つの方法を探りました。まず、equalsIgnoreCase() を使用して文字列を比較し、大文字小文字を区別しない比較を行いました。これにより、文字の大文字小文字に関係なく 2 つの文字列が同じかどうかをチェックする方法を示しました。
次に、詳細は提供されていませんが、手順からは、ループを使用して文字列内を反復処理し、Character.isLowerCase() を利用して個々の文字が小文字かどうかをチェックする方法を学ぶことになり、この過程で非文字の文字を無視する方法も考慮することが示されています。



