Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaで文字列がアルファベットのみか判定する方法【2つの手法を解説】

Javaで文字列がアルファベット(英字)のみで構成されているかを検証するには、大きく分けて2つの方法があります。1つは、文字列内の各文字を英字(大文字・小文字)と1つずつ比較する方法、もう1つは正規表現を使う方法です。

方法1:各文字を1つずつ比較して検証する

次のプログラムは、ユーザーから文字列(名前)を入力として受け取り、含まれる各文字が英字(a〜z、A〜Z)の範囲内にあるかを順番にチェックすることで、入力が適切な名前かどうかを判定します。

import java.util.Scanner;
public class ValidatingString {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter your name: ");
        String str = sc.next();
        boolean flag = true;
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            if (!(ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z')) {
                flag = false;
            }
        }
        if(flag)
            System.out.println("Given string is a proper name.");
        else
            System.out.println("Given string is not a proper name.");
    }
}

実行結果1

Enter your name:
krishna45
Given string is not a proper name.

実行結果2

Enter your name:
kasyap
Given string is a proper name.

この例では、数値を含む「krishna45」は不正な名前として判定され、英字のみの「kasyap」は適切な名前として判定されています。

方法2:正規表現を使って検証する

次のプログラムは、正規表現「^[a-zA-Z]*$」を使って、入力された文字列(名前)が適切な名前かどうかを判定します。Stringクラスのmatches()メソッドに正規表現を渡すことで、文字列全体がパターンに一致するかどうかを簡潔に確認できます。

import java.util.Scanner;
public class ValidatingString2 {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter your name: ");
        String str = sc.next();
        if((!str.equals(null))&&str.matches("^[a-zA-Z]*$"))
            System.out.println("Given string is a proper name.");
        else
            System.out.println("Given string is not a proper name.");
    }
}

実行結果1

Enter your name:
krishna45
Given string is not a proper name.

実行結果2

Enter your name:
kasyap
Given string is a proper name.

補足:Character.isLetter()メソッドについて

Javaには、文字が英字かどうかを判定するための標準APIとしてCharacter.isLetter()が用意されており、これを使えば範囲比較をより簡潔に記述できます。ただし、isLetter()はUnicode上のさまざまな言語の文字も「文字」として判定するため、ASCII英字(a〜z、A〜Z)のみを厳密に検証したい場合は、本記事で紹介した範囲比較や正規表現による方法が確実です。

  1. JavaでJTableをフィルタリングする方法!TableRowSorterとsetRowFilter()の使い方を解説

    JTableは、テーブルを柔軟に作成・表示できるSwingのコンポーネントです。テーブルの内容を扱うためのメソッドはTableModelインターフェースで定義されており、実際にはAbstractTableModelクラスを継承して独自のテーブルモデルを実装するのが一般的です。また、JTableではsetCellEditor()メソッドにTableCellEditorインターフェースの実装オブジェクトを渡すことで、セルの編集機能を追加することもできます。 テーブルの表示内容をフィルタリング(絞り込み)するには、TableRowSorterクラスのsetRowFilter()メソッドを使用します。

  2. JavaのJToggleButton実装ガイド:ON/OFF切替ボタンの作り方を解説

    JToggleButtonとは JToggleButtonはAbstractButtonを拡張したクラスで、クリックするたびにONとOFFが切り替わるトグルボタンを実現するために使用されます。通常のボタンと異なり、押した状態を保持できるのが特徴です。 JToggleButtonの主な特徴 最初に押されたときは押し込まれた状態のままとなり、もう一度押してはじめて元の状態(押されていない状態)に戻ります。 ボタンが押されるたびにActionEventが発生します。 さらに、JToggleButtonはItemEventも発生させることができます。このイベントは、選択状態という概念を持つコンポー