2016-10-31 17 views
1

私は、文字列を繰り返し処理する一連のforループでこれを行うことができることを知っていますが、それはひどいプログラミングです。まあ、私の教授は私がこのようにしないことを好む。私はこれを行うために正規表現を使用したいと思います。Java文字列に少なくとも1つの大文字、小文字、および数字が含まれているかどうかを確認するにはどうすればよいですか?

+0

だから何がこれを行うには、正規表現を使用してからあなたを停止するのですか? – t0mppa

+0

どのようにわからないのですか? –

+5

あなたは正規表現を書く方法やregexpを使って 'String'がそれにマッチするかどうかを調べる方法が分かりません。両方のチュートリアルは、あなたの好きな検索エンジンによる検索で非常に簡単に見つけられるはずです。 – t0mppa

答えて

5

単純な文字列チェックでは、文字列を1回スイープするだけで十分です。正規表現は、任意の重要な利点を提供することはありませんので、ループは同じことを達成するために、ここに簡単です:

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の特定の問題を助けるべきだと思います。

+0

正規表現の使用を避けましたが、あなたのソリューションは優雅でシンプルです。 –

+0

@MichaelDrum:ありがとう。私は助けられてうれしいです。 – CyprUS

+0

@MichaelDrum:私の機能があなたの問題を解決すると思うなら、解決策を受け入れたものとしてマークしてください。ありがとうございました。 – CyprUS

1

は、Javaの文字クラスを使用することができ、正規表現

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).+$ 

descriptions are as follow 
(?=.*[a-z]) -- check lower case letter 
(?=.*[A-Z]) -- check upper case letter 
(?=.*\d) -- check one digit exists 
+0

ありがとう。これは非常に有望に見えます。しかし、私は正規表現の経験がありません。 String _text_に少なくとも1つの小文字、1つの大文字、および数字が含まれているかどうかを知りたいとします。どのように私はそれを「if」という声明の形で書くだろうか? –

+2

このチュートリアルに従ってください。https://www.tutorialspoint.com/java/java_regular_expressions.htm –

0

を試してみてください。小文字の場合はCharacter.isLowerCase(ch) Character.isUpperCase(ch)です。このの場合は、文字列を反復処理する必要があります。そのビットはあなたと無関係ですが、"\\d+"を文字列の数字に使用できます。

2

あなたが使用することができます。

public static boolean isTextContainUpperCase(String text) { 
     if (StringUtils.isEmpty(text)) { 
       return false; 
     } 
     return text.equals(text.toLowerCase()); 
} 
+0

awesome !!!!!!!しかし、あなたのifは有効ではありません – vihkat

関連する問題