読者です 読者をやめる 読者になる 読者になる

【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. は[]の中に「1回以上にマッチ」だそうです。

他にも色々な演算子があるので以下参照です。
http://www.komonet.ne.jp/~perl/chap7.htm

javaのmatch()を使って、判定しています。
@や-などの記号の判定は、直接
hoge.match("@");と書いています。

1つ問題だったのは、「.」のピリオドが、matchでは上手く判定されなかったことです。なので、http://mocha.exblog.jp/1636512/のサイトで知ったのは「\\.」と記述する必要が有るということでした。
ちなみに

スペースの判定

[\\r]

色々あるみたいです…。
正規表現のまとめとして下に張ったサイトは比較的わかりやすいと思いました。
機会があったらもっとちゃんと覚えよう…