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

JavaJavaBeginner
今すぐ練習

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

はじめに

この実験では、Java で文字列が大文字かどうかをチェックする方法を学びます。toUpperCase() を使用して元の文字列とその大文字バージョンを比較する方法から始めて、これを達成するためのさまざまな方法を探ります。

その後、文字列の各文字を反復処理し、Character.isUpperCase() メソッドを使用して個々の文字の大文字小文字をチェックする方法を学びます。最後に、これらのチェックを実行する際に文字列内の非文字文字をどのように扱うかについて説明します。


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

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

このステップでは、Java で文字列を比較する方法、特に大文字小文字を区別しない比較の実行方法について学びます。これはプログラミングにおける一般的なタスクです。たとえば、ユーザーが "yes"、"Yes"、または "YES" を入力したかどうかをチェックする場合などです。

まず、~/project ディレクトリに StringCompare.java という名前の新しい Java ファイルを作成しましょう。これは、左側のファイルエクスプローラーで右クリックして「新しいファイル」を選択し、StringCompare.java と入力することで行えます。

次に、エディタで StringCompare.java ファイルを開き、以下のコードを追加します。

public class StringCompare {
    public static void main(String[] args) {
        String str1 = "Hello";
        String str2 = "hello";

        // Case-sensitive comparison
        boolean areEqualCaseSensitive = str1.equals(str2);
        System.out.println("Case-sensitive comparison: " + areEqualCaseSensitive);

        // Case-insensitive comparison using toUpperCase()
        boolean areEqualCaseInsensitive = str1.toUpperCase().equals(str2.toUpperCase());
        System.out.println("Case-insensitive comparison using toUpperCase(): " + areEqualCaseInsensitive);
    }
}

このコードを分解してみましょう。

  • 大文字小文字が異なる 2 つの String 変数 str1str2 を宣言します。
  • str1.equals(str2) は大文字小文字を区別する比較を行います。文字列が文字の大文字小文字を含めて完全に同じである場合にのみ true を返します。
  • str1.toUpperCase()str1 をすべて大文字に変換します("HELLO")。
  • str2.toUpperCase()str2 をすべて大文字に変換します("HELLO")。
  • その後、.equals() を使って文字列の大文字バージョンを比較することで、実質的に大文字小文字を区別しない比較を行います。

Ctrl + S(Mac の場合は Cmd + S)を押してファイルを保存します。

次に、ターミナルでこのプログラムをコンパイルして実行しましょう。~/project ディレクトリにいることを確認してください。

コードをコンパイルします。

javac StringCompare.java

エラーがなければ、StringCompare.class ファイルが作成されます。

次に、コンパイルされたコードを実行します。

java StringCompare

以下の出力が表示されるはずです。

Case-sensitive comparison: false
Case-insensitive comparison using toUpperCase(): true

この出力は、大文字小文字を区別する比較(equals())では "Hello" と "hello" は大文字小文字が異なるため false を返し、toUpperCase() を使った大文字小文字を区別しない比較では両方の文字列が大文字に変換されて "HELLO" になるため true を返すことを示しています。

文字列の比較前に toUpperCase()(または toLowerCase())を使用することは、Java で大文字小文字を区別しない比較を行う一般的な方法です。

ループ内で Character.isUpperCase() を使用する

前のステップでは、文字列全体を大文字小文字を区別せずに比較する方法を学びました。今回は、文字列内の個々の文字を調べ、それが大文字かどうかを判断する方法を探りましょう。これは、文字列の構造を分析する場合や、大文字の文字数を数えたり入力形式を検証したりする際に役立ちます。

Java では、個々の文字を扱うのに便利なメソッドを持つ Character クラスが用意されています。そのようなメソッドの 1 つが isUpperCase() で、与えられた文字が大文字かどうかをチェックします。

これを実証するために、StringCompare.java ファイルを変更しましょう。エディタで ~/project/StringCompare.java を開き、その内容を以下のコードに置き換えます。

public class StringCompare {
    public static void main(String[] args) {
        String text = "Hello World";
        int uppercaseCount = 0;

        System.out.println("Analyzing the string: \"" + text + "\"");

        // 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 uppercase
            if (Character.isUpperCase(character)) {
                System.out.println("Found an uppercase character: " + character + " at index " + i);
                uppercaseCount++; // Increment the counter
            }
        }

        System.out.println("Total uppercase characters found: " + uppercaseCount);
    }
}

このコードの新しい部分を理解しましょう。

  • String 型の変数 text と、初期値が 0 の整数型の変数 uppercaseCount を宣言します。
  • for ループを使って text 文字列の各文字を反復処理します。ループはインデックス 0 から文字列の長さ(ただし、その長さ自体は含まない)まで実行されます。
  • text.charAt(i) は、文字列内の現在のインデックス i にある文字を取得します。
  • Character.isUpperCase(character) は、文字が大文字かどうかをチェックします。このメソッドは、文字が大文字の場合は true を返し、そうでない場合は false を返します。
  • isUpperCase()true を返す場合、大文字の文字とそのインデックスを示すメッセージを出力し、uppercaseCount をインクリメントします。

ファイルを保存します(Ctrl + S)。

次に、~/project ディレクトリからターミナルで変更したプログラムをコンパイルして実行しましょう。

コンパイル:

javac StringCompare.java

実行:

java StringCompare

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

Analyzing the string: "Hello World"
Found an uppercase character: H at index 0
Found an uppercase character: W at index 6
Total uppercase characters found: 2

この出力は、プログラムが文字列内の大文字 'H' と 'W' を正しく識別し、それらをカウントしたことを示しています。

ループ内で Character.isUpperCase() を使用することは、文字列を 1 文字ずつ分析する強力な手法です。次のステップでは、文字ではない文字をどのように扱うかを考えます。

非文字の文字を扱う

前のステップでは、Character.isUpperCase() を使って大文字を識別しました。しかし、文字列には文字だけでなく、数字、記号、空白、句読点なども含まれることがあります。文字列の分析を行う際には、異なる種類の文字を区別する必要があることが多いです。

Character クラスには、この目的のための他の便利なメソッドが用意されています。例えば以下のようなものです。

  • Character.isLetter(char ch): 文字がアルファベットかどうかをチェックします。
  • Character.isDigit(char ch): 文字が数字 (0 - 9) かどうかをチェックします。
  • Character.isWhitespace(char ch): 文字が空白文字 (スペース、タブ、改行など) かどうかをチェックします。

文字列内の非文字の文字を扱い、異なる種類の文字をカウントする方法を実証するために、StringCompare.java ファイルを再度変更しましょう。エディタで ~/project/StringCompare.java を開き、その内容を以下のコードに置き換えます。

public class StringCompare {
    public static void main(String[] args) {
        String text = "Hello World 123!";
        int letterCount = 0;
        int digitCount = 0;
        int whitespaceCount = 0;
        int otherCount = 0;

        System.out.println("Analyzing the string: \"" + text + "\"");

        // 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 the type of the character
            if (Character.isLetter(character)) {
                letterCount++;
            } else if (Character.isDigit(character)) {
                digitCount++;
            } else if (Character.isWhitespace(character)) {
                whitespaceCount++;
            } else {
                otherCount++; // Characters that are not letters, digits, or whitespace
            }
        }

        System.out.println("Total characters: " + text.length());
        System.out.println("Letter count: " + letterCount);
        System.out.println("Digit count: " + digitCount);
        System.out.println("Whitespace count: " + whitespaceCount);
        System.out.println("Other character count: " + otherCount);
    }
}

この更新されたコードでは、以下のことを行っています。

  • 文字、数字、空白、その他の文字のカウンターを初期化します。
  • ループ内で、if-else if-else 文を使って Character.isLetter()Character.isDigit()Character.isWhitespace() を用いて各文字の種類をチェックします。
  • 文字の種類に基づいて対応するカウンターをインクリメントします。
  • 最後に、各種類の文字のカウント数を出力します。

ファイルを保存します(Ctrl + S)。

次に、~/project ディレクトリからターミナルでプログラムをコンパイルして実行しましょう。

コンパイル:

javac StringCompare.java

実行:

java StringCompare

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

Analyzing the string: "Hello World 123!"
Total characters: 16
Letter count: 10
Digit count: 3
Whitespace count: 2
Other character count: 1

この出力は、文字列 "Hello World 123!" 内の異なる種類の文字を正しく識別し、カウントしています。文字は 'H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd'(合計 10 個)です。数字は '1', '2', '3'(合計 3 個)です。空白文字は "Hello" と "World" の間のスペース、および "World" と "123" の間のスペース(合計 2 個)です。その他の文字は '!'(1 個)です。合計カウントは 10 + 3 + 2 + 1 = 16 で、文字列の長さと一致しています。

Character.isLetter()Character.isDigit()Character.isWhitespace() などのメソッドを使うことで、文字列内の様々な種類の文字を扱える、より堅牢なコードを書くことができます。これは、データ検証、入力解析、またはテキスト分析などのタスクにおいて重要です。

まとめ

この実験では、Java で文字列が大文字かどうかをチェックする方法を学びました。主に 2 つの方法を探りました。まず、toUpperCase() メソッドと equals() メソッドを使って、文字列とその大文字変換版を比較することで、大文字小文字を区別しない比較を行いました。この方法は、2 つの文字列が大文字小文字に関係なく同じかどうかをチェックするのに便利です。

次に、文字列の各文字を反復処理し、ループ内で Character.isUpperCase() メソッドを使って、各文字が大文字かどうかをチェックする方法を学びました。また、このプロセス中に非文字の文字をどのように扱うかも考慮し、チェックが堅牢になるようにしました。これらの手法は、タスクの具体的な要件に基づいて、文字列の大文字状態を判断するための異なるアプローチを提供します。