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

JavaJavaBeginner
今すぐ練習

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

はじめに

この実験では、Java で文字列が小文字かどうかをチェックする方法を学びます。toLowerCase()equalsIgnoreCase() を使用して大文字小文字を無視しながら文字列を比較する方法から始めて、これを達成するためのさまざまな方法を探ります。

次に、文字列の各文字を個別にチェックするために、文字列を反復処理して Character.isLowerCase() を使用する方法を学びます。最後に、このチェックを実行する際に非文字の文字をどのように扱うかを説明します。


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/for_loop("For Loop") java/StringManipulationGroup -.-> java/strings("Strings") java/SystemandDataProcessingGroup -.-> java/string_methods("String Methods") subgraph Lab Skills java/for_loop -.-> lab-559986{{"Java で文字列が小文字かどうかをチェックする方法"}} java/strings -.-> lab-559986{{"Java で文字列が小文字かどうかをチェックする方法"}} java/string_methods -.-> lab-559986{{"Java で文字列が小文字かどうかをチェックする方法"}} end

toLowerCase() を使った文字列の比較

このステップでは、Java で文字の大文字小文字を無視して文字列を比較する方法を学びます。これは、2 つの文字列が大文字または小文字を使用しているかどうかに関係なく同じであるかどうかをチェックしたい場合の一般的なタスクです。

これを練習するために、新しい Java ファイルを作成しましょう。

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

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

  3. ファイルエクスプローラーの空白部分を右クリックし、「新しいファイル」を選択して、CaseInsensitiveCompare.java と名付けます。

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

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

    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 変数 str1str2str3 を宣言しています。
    • str1.equals(str2) は大文字小文字を区別した比較を行います。「Hello」と「hello」は大文字の 'H' のために異なるため、false を返します。
    • str1.equalsIgnoreCase(str2) は大文字小文字を無視した比較を行います。大文字小文字を無視すると「Hello」と「hello」は同じであるため、true を返します。
    • str1str3 を大文字小文字を無視して比較し、異なる単語は依然として異なると見なされることを示しています。
  6. ファイルを保存します(Ctrl+S または Cmd+S)。

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

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

    javac CaseInsensitiveCompare.java

    エラーがなければ、何も出力されません。~/project ディレクトリに CaseInsensitiveCompare.class ファイルが作成されます。

  9. 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() メソッドを使用して、文字列内の小文字の数をカウントします。

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

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

  3. ~/project ディレクトリに CountLowercase.java という名前の新しいファイルを作成します。

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

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

    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 をインクリメントします。
    • 最後に、元の文字列と小文字の総数を出力します。
  6. ファイルを保存します(Ctrl+S または Cmd+S)。

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

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

    javac CountLowercase.java

    コンパイルが成功すると、CountLowercase.class ファイルが作成されます。

  9. コンパイルされた 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() メソッドを使用します。

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

  2. 前のステップで作成した CountLowercase.java ファイルを開きます。

  3. 文字が小文字かどうかをチェックする前に、その文字が文字であるかどうかをチェックするようにコードを修正します。既存のコードを次のコードに置き換えます。

    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) を使用して lettersOnlyStringBuilder に追加します。
    • Character.isLowerCase(character) のチェックは、Character.isLetter() のチェックの中にネストされるようになりました。これにより、実際の文字の中でのみ小文字の文字をカウントするようになります。
    • 最後に、元の文字列、文字のみを含む文字列、およびそれらの文字の中の小文字の文字のカウントを出力します。
  4. ファイルを保存します(Ctrl+S または Cmd+S)。

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

  6. 修正した Java プログラムをコンパイルします。

    javac CountLowercase.java

    コンパイルエラーがないことを確認します。

  7. コンパイルされた 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() を利用して個々の文字が小文字かどうかをチェックする方法を学ぶことになり、この過程で非文字の文字を無視する方法も考慮することが示されています。