- 코드 테러 주의
정규식을 활용하여 전화번호를 입력시 자릿수에 맞게 자동으로 ' - ' 처리 해주기.
조건 1) 지역번호가 두자리 수 인 전화번호에 맞게 처리(예: 02-***-****)
조건 2) 지역번호가 세자리 수 인 전화번호에 맞게 처리
조건 3) 조건 1, 2에서 중간번호가 3, 4자리인 수에 맞춰 - 처리
** 첫번째 시도,
아래와 같이 이렇게 하면 에러가 남.
pakage test;
import java.util.regex.Pattern;
public class TelTest {
public static String telNumber(String number) {
// 전화번호 정규표현식으로 제한
String regEx = "(\\d{2,3})(\\d{3,4})(\\d{4})";
if(!Pattern.matches(regEx, number)){
return null;
}
// 070일때, 중간자리 3, 마지막자리 3자리 입력일 때 (ex. 070 123 123)
if(number.substring(0,3).contains("070") && number.length() == 9){
// 받은 값을 확인하고 싶다면
System.out.println(number.toString());
return null;
}
// 지역번호가 3자리수일 때, 중간자리 3, 마지막자리 3자리 입력일 때(ex. 031 123 123)
// 에러남 02-123-1234도 포함이 되기 때문에
// else if(number.substring(0,3).length() == 3 && number.length() == 9) {
// 받은 값을 확인하고 싶다면
//System.out.println(number.toString());
//return null;
//}
return number.replaceAll(regEx, "$1-$2-$3"); // 출력 xxx-xxxx-xxxx
}
public static void main(String[] args){
System.out.println(telNumber("021231234")); //출력 02-123-1234
System.out.println(telNumber("0212341234")); //출력 02-1234-1234
System.out.println(telNumber("0701231234")); //출력 070-123-1234
System.out.println(telNumber("07012341234"));//출력 070-1234-1234
System.out.println(telNumber("070123123")); // 에러 070 123 123 출력 => null
}
}
- 2차시도, 수정본
pakage test;
import java.util.regex.Pattern;
public class TelTest {
public static String telNumber(String number) {
// 전화번호 정규표현식으로 제한
String regEx = "(\\d{2,3})(\\d{3,4})(\\d{4})";
if(!Pattern.matches(regEx, number)){
return null;
}
// 070일때, 중간자리 3, 마지막자리 3자리 입력일 때 (ex. 070 123 123) ==> 이 부분도 삭제가능
if(number.substring(0,3).contains("070") && number.length() == 9){
// 받은 값을 확인하고 싶다면
System.out.println(number.toString());
return null;
}
// 지역번호가 02이면서 9자리 수일 때 == not error
else if(number.substring(0,2).contains("02") && number.length() == 9){
return number.replaceAll(regEx, "$1-$2-$3"); // 출력 xxx-xxx-xxxx
}
// 지역번호 02를 제외한 지역번호일 때
else if(number.length() == 9) {
System.out.println(number.toString());
return null;
}
return number.replaceAll(regEx, "$1-$2-$3"); // 출력 xxx-xxxx-xxxx
}
public static void main(String[] args){
System.out.println(telNumber("021231234")); //출력 02-123-1234
System.out.println(telNumber("0212341234")); //출력 02-1234-1234
System.out.println(telNumber("0701231234")); //출력 070-123-1234
System.out.println(telNumber("07012341234"));//출력 070-1234-1234
System.out.println(telNumber("070123123")); // 에러 070 123 123 출력 => null
}
}
** 3차시도 ! 진짜 최종
pakage test;
import java.util.regex.Pattern;
public class TelTest {
public static String telNumber(String number) {
// 전화번호 정규표현식으로 제한
String regEx = "(\\d{2,3})(\\d{3,4})(\\d{4})";
if(!Pattern.matches(regEx, number)){
System.out.println("에러 1 : 형식 오류 ====> "+number.toString());
return null;
}
// 지역번호가 02이면서 9자리 수일 때 == not error
if(number.substring(0,2).contains("02") && number.length() == 9){
return number.replaceAll(regEx, "$1-$2-$3"); // 출력 xxx-xxx-xxxx
}
// 지역번호 02를 제외한 번호 (070,031,064 ...) 가 9자리 일 때 == > 에러
else if(number.length() == 9){
System.out.println("에러 2 : 자릿수 입력 오류 ====> "+number.toString());
return null;
}
return number.replaceAll(regEx, "$1-$2-$3"); // 출력 xxx-xxxx-xxxx
}
public static void main(String[] args){
System.out.println(telNumber("021231234")); //출력 02-123-1234
System.out.println(telNumber("0212341234")); //출력 02-1234-1234
System.out.println(telNumber("0701231234")); //출력 070-123-1234
System.out.println(telNumber("07012341234"));//출력 070-1234-1234
System.out.println(telNumber("070123123")); // 에러 070 123 123 출력 => null
}
}
'JAVA' 카테고리의 다른 글
JAVA - 특정 시간이 지나면 확장자파일(.jpg/.png) 삭제 (0) | 2021.11.30 |
---|---|
JAVA - 디렉토리 내 해당 확장자 파일만 삭제하기 (0) | 2021.11.26 |
Java - static 변수/메소드 (0) | 2021.10.25 |
Java- 생성자 (0) | 2021.10.25 |
Java - 인스턴스 실습 (0) | 2021.10.22 |