주민등록번호 추출

|

RRNTest.java
by Parsing
class RRN {
	String[] validNum = new String[30];
	public void ValidateNumbers(String str) {
		//System.out.println(str.length());
		int i = 0, j = 0, k = 0;
		while (i < str.length()-12) {
			for (j = 0; j < 13; ++j) {
				if (!(str.charAt(i+j) >= '0' && str.charAt(i+j) <= '9')) {
					break;
				}
				else if (j == 12) {
					validNum[k] = str.substring(i, i+13);
					k++;
				}
			}
			++i;
		}
	}
	
	public void Validate() {
		for (int i = 0; i < validNum.length; ++i) {
			if (validNum[i] != null && validNum[i] != "Invalid") {
				System.out.println(ValidateYY(validNum[i]));
			}
		}
	}
	
	public String ValidateYY(String str) {
		return ValidateMM(str);
	}
	
	public String ValidateMM(String str) {
		if (str.charAt(2) == '0' && 
				str.charAt(3) >= '0' && str.charAt(3) <= '9') {
			return ValidateDD(str);
		}
		else if (str.charAt(2) == '1' && 
				str.charAt(3) >= '0' && str.charAt(3) <= '2') {
			return ValidateDD(str);
		}
		return "Invalid";
	}
	
	public String ValidateDD(String str) {
		if (str.charAt(4) == '0' && 
				str.charAt(5) >= '0' && str.charAt(5) <= '9')
		{
			return ValidateRemain(str);
		}
		else if (str.charAt(4) == '1' && 
				str.charAt(5) >= '0' && str.charAt(5) <= '9')
		{
			return ValidateRemain(str);
		}
		else if (str.charAt(4) == '2' && 
				str.charAt(5) >= '0' && str.charAt(5) <= '9')
		{
			return ValidateRemain(str);
		}
		else if (str.charAt(4) == '3' && 
				str.charAt(5) >= '0' && str.charAt(5) <= '1')
		{
			return ValidateRemain(str);
		}
		return "Invalid";
	}
	
	public String ValidateRemain(String str) {
		return str;
	}
}

public class RRNTest {
	public static void main(String[] args) {
		String str = "abc128714cd7903241081511AE@560547145666#";
		
		RRN r = new RRN();
		r.ValidateNumbers(str);
		r.Validate();
	}
}

by Regular Expression
C++pasted just now: 
import java.util.regex.Matcher;
import java.util.regex.Pattern;

class RRN {
	String rrn;
	String PatternStr = "\\d\\d(0[1-9]|1[0-2])([0-2][1-9]|3[0-1])[1-4]\\d{6}";
	//Pattern pat = Pattern.compile("\\w\\w");
	//Pattern pat = Pattern.compile("(?i)]*[src] *= *[\"\']{0,1}([^\"\'\\ >]*)");
	Pattern pat = Pattern.compile(PatternStr);

	Matcher mat;
	boolean found;

	public String FindRRN(String str) {
		mat = pat.matcher(str);
		found = mat.find();
		if (found)
			rrn = mat.group();
		else
			rrn = "Not found";
		return rrn;
	}
}

public class RRNTest {
	public static void main(String[] args) {
		String str = "abc128714cd7903241081511AE@560547145666#";
		String result;
		RRN r = new RRN();
		result = r.FindRRN(str);
		System.out.println(result);
	}
}




-end

'Java' 카테고리의 다른 글

Exception  (0) 2010.08.23
자바 주요 클래스  (0) 2010.08.19
static vs final  (0) 2010.08.17
내부 클래스 용도  (0) 2010.08.17
자바 소수점 출력  (0) 2010.08.13
And