Java 文字列に少なくとも 1 つの大文字、小文字、数字が含まれているかどうかを確認するにはどうすればよいですか? 質問する

Java 文字列に少なくとも 1 つの大文字、小文字、数字が含まれているかどうかを確認するにはどうすればよいですか? 質問する

文字列を反復処理する一連の for ループを使用してこれを行うことはできますが、それはひどいプログラミングになります。教授は、この方法を使用しないように勧めています。これを行うには、正規表現を使用したいと思います。

ベストアンサー1

単純な文字列チェックの場合、文字列を 1 回スキャンするだけで十分です。正規表現では大きなメリットが得られないため、同じことを実現する単純な for ループを次に示します。

private static boolean checkString(String str) {
    char ch;
    boolean capitalFlag = false;
    boolean lowerCaseFlag = false;
    boolean numberFlag = false;
    for(int i=0;i < str.length();i++) {
        ch = str.charAt(i);
        if( Character.isDigit(ch)) {
            numberFlag = true;
        }
        else if (Character.isUpperCase(ch)) {
            capitalFlag = true;
        } else if (Character.isLowerCase(ch)) {
            lowerCaseFlag = true;
        }
        if(numberFlag && capitalFlag && lowerCaseFlag)
            return true;
    }
    return false;
}

テスト走行:

System.out.println(checkString("aBCd1")); // output is true
System.out.println(checkString("abcd")); //output is false

これは OP の特定の問題に役立つと思います。

おすすめ記事