«Tistory 블로그에서 작성했던 글»
개인정보 입력에서 거의 빠지지 않는 항목인 전화번호를 추출하는 방법을 알아보자.
요즘은 보통 집전화번호 같은 경우는 필수로 받질 않기 때문에 사람들이 임의로 아무거나 입력하는 경우가 많다.
그러나 우리는 입력된 그 번호를 가지고 데이터를 핸들링 해야한다.
이번엔 하이픈(-) 을 넣어서 구분자 입력 처리를 해볼것이다.
소스부터 보시라..
JAVA Method
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
public void telTest() {
String sample = "";
System.out.println(this.getTelNumber(sample)); // "--" 반환
String sample1 = "02.222.3333";
System.out.println(this.getTelNumber(sample1)); // "02-222-3333" 반환
String sample2 = "02.2222.3333";
System.out.println(this.getTelNumber(sample2)); // "02-2222-3333" 반환
String sample3 = "010.222.3333";
System.out.println(this.getTelNumber(sample3)); // "010-222-3333" 반환
String sample4 = "010.2222.3333";
System.out.println(this.getTelNumber(sample4)); // "010-2222-3333" 반환
String sample5 = "010.22222.33333";
System.out.println(this.getTelNumber(sample5)); // "010-2222-233333" 반환
}
public String getTelNumber(String tel) {
// 숫자만 남기기
tel = tel.replaceAll("\[^0-9\]", "");
// 9자리 이상이면 전화번호
if (tel.length() > 9) {
String regEx = "(\\d{3})(\\d{4})(\\d{4})";
if (tel.length() == 9) {
regEx = "(\\d{2})(\\d{3})(\\d{4})";
} else if (tel.length() == 10) {
// 10자리 일 경우 처리가 달라진다. ex) 02-2222-3333 , 011-222-3333
String chkTel = tel.substring(0, 2);
// 앞자리가 02로 시작되면 앞자리가 2자리
if (chkTel.equals("02")) {
regEx = "(\\d{2})(\\d{4})(\\d{4})";
} else {
regEx = "(\\d{3})(\\d{3})(\\d{4})";
}
}
tel = tel.replaceAll(regEx, "$1-$2-$3");
} else {
// 9자리 이하면 그냥 -- 만 추가해준다.
tel = tel + "--";
}
}
정규식을 조금만 알면 쉽게 해결할 수 있다. (물론 나는 조금도 몰라서 검색했다.)
특별한 부분이 없어 소스만 보면 알 수 있을것이다.
만약 하이픈(-)이 아닌 다른걸 사용하고 싶다면
1
tel = tel.replaceAll(regEx, "$1-$2-$3");
위 코드에서 "$1-$2-$3"
의 하이픈을 변경하고 싶은 다른 구분자로 사용하면 된다.