【Java】正規表現による半角チェック
授業の演習か何かで、半角全角チェックをする必要があったので、色々調べてみました。
正規表現とは
http://e-words.jp/w/E6ADA3E8A68FE8A1A8E78FBE.html
StringCheckクラス
最終的に出来たのは下の感じです。メインで参考にさせていただいたのが以下のサイトです。
http://www.groovy-number.com/java/sample/StringCheck.html
package shop; import java.lang.String; import java.lang.System; //半角チェック public class StringCheck { public static int check(String A00) { int i; int count=0; String save_string; //□半角の文字数を返す for(i = 0;i < A00.length();i++){ save_string = String.valueOf(A00.charAt(//[一-龠]+|[ぁ-ん]+|[ァ-ヴー]+|[a-zA-Z0-9]+|[a-zA-Z0-9]+ if(save_string.matches("[一-龠]+")){ count++; }else if(save_string.matches("[0-9a-zA-Z]+")){ }else if(save_string.matches("/")){ }else if(save_string.matches("@")){ }else if(save_string.matches("\\.")){ }else if(save_string.matches("-")){ }else if(save_string.matches("[\r]")){ count++; }else{ //全角の個数 count++; } } return count; } }
全角チェックの時に作成したメソッド
StringCheck check = new StringCheck(); //□半角がないかチェックする、全角チェック用 public boolean zenkaku_check(String text){ boolean check1 = false; //□半角スペースを含んでいる+全角の数-1が文字数と正しいか if(check.check(text) == text.length()){ System.out.println("2つ目だよ!"); check1 = true; } return check1; }
正規表現について
正規表現をはじめて使ったのですが…半角全角チェックの時に必須のようですね…。
漢字の判定
[一-龠]+
半角文字の判定
[0-9a-zA-Z]+
- は[]の中に「1回以上にマッチ」だそうです。
他にも色々な演算子があるので以下参照です。
http://www.komonet.ne.jp/~perl/chap7.htm
javaのmatch()を使って、判定しています。
@や-などの記号の判定は、直接
hoge.match("@");と書いています。
1つ問題だったのは、「.」のピリオドが、matchでは上手く判定されなかったことです。なので、http://mocha.exblog.jp/1636512/のサイトで知ったのは「\\.」と記述する必要が有るということでした。
ちなみに