通知
すべてクリア
Topic starter
2016年4月22日 9:06 PM
よろしくお願いします。
以下の環境で開発中です
OS Win7 x86
tomcat8
Java java version 1.8.0_77
String pass = Agd42/8-gaddS;
となっている場合に、
大文字アルファベット:2
小文字アルファベット:6
数字:3
記号:2
という結果を知りたいのですが、何か良い関数は無いでしょうか?
2016年4月23日 8:48 AM
文字の場合は isDigit(), isAlpha(), isUpper(), isLower() などで判別可能です。
文字列から文字種(数字、大文字、小文字)を抜き出すのなら正規表現を使うのが
いいでしょう。ただし、java だけではありませんが文字、文字列で扱うのは1バイトで
表現できるものと決めてかかってはいけません。取扱う文字コードがユニコードの場合 1
6ビットか 32ビットかが最小単位です。(UTF-8 の場合は1バイトか3バイトかが一文字
の単位です)
数字は :\d か [0-9]
小文字は:[a-z]
大文字は:[A-Z]
で指定したパターンに合うものを抜き出した部分文字列の文字数を求めればいいでしょう
。
以下のサイトが役に立てばいいのですが
http://qiita.com/ymsr5612/items/7c8811b5cf37d700adc4
http://java-reference.sakuraweb.com/java_string_regex.html
Topic starter
2016年4月25日 12:00 PM
>しま様
URLを教えていただき、ありがとうございます。
一文字ずつ確認して、種類ごとにカウントする方法しかないですね。
文字のバイト数にはどの言語でも泣かされます…。