ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Programmers / level1] 핸드폰 번호 가리기
    Programmers/코딩테스트 풀이 2021. 12. 3. 22:53

    프로그래머스 / level1  / Java  / 핸드폰 번호 가리기

    문제
    프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
    전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
    package TestSolution;
    
    // 2021.12.03(금)
    public class phoneNumberSolution {
        public static String solution(String phone_number) {
            String answer1 = "";
            String answer2 = "";
            String answer3 = "";
    
            // ex) 매개변수 phone_number가 01012345678이라고 가정했을 때,
            //     첫번째 인덱스부터 마지막 -4 인덱스의 값(0101234)을 저장하는 변수 생성
            String phone_number1 =  phone_number.substring(0,phone_number.length()-4);
            
            // 마지막 -4 인덱스부터 마지막 인덱스까지의 값(5678)을 저장하는 변수
            String phone_number2 =  phone_number.substring(phone_number.length()-4);
    
            // 1. For문을 사용한 방법
            String asta = "";
            for( int i = 0 ; i < phone_number1.length() ; i++ ){
                asta += "*";
            }
            answer1 += phone_number.replace(phone_number1, asta);
    
            // 2. 일반 정규식
            answer2 = phone_number1.replaceAll("[0-9]", "*");
            answer2 += phone_number2;
    
            // 3. 정규식 전방탐색
            answer3 = phone_number.replaceAll(".(?=.{4})", "*");
    
            return answer3;
        }
    }

    * 오늘의 공부 내용

     

    정규표현식 특정한 규칙을 가진 문자열의 집합을
    표현하는데 사용하는 형식 언어 
    정규표현식을 이용하면 특정 문자열에 대하여
    특정 조건 검색, 추출, 치환 등을 
    복잡한 조건문을 사용하지 않고 간단하게 처리가능
                - 정규표현식 메소드
                1) RegExp (정규표현식 객체) 메소드
                -- test() : 문자열에서 정규식 객체의 값과 일치하는 값이 있으면 true 반환
                -- exec() : 문자열에서 정규식 객체의 값과 일치하는 값이 있으면
                            제일 처음 매칭된 문자열을 반환

                2) String 메소드
                -- match() : 문자열에서 정규식 객체의 값과 일치하는 모든 값을 반환
                -- replace() : 문자열에서 정규식 객체의 값과 일치하는 부분을 새로운 값으로 변경
                -- search() : 일치하는 부분의 시작 인덱스 반환
                -- split() : 정규식 객체의 값을 구분자로 하여 배열 생성
        \d : 숫자 == [0-9]
        \w : 아무 단어(숫자 포함)
        \s : 공백 문자(띄어쓰기, 줄바꿈, 탭)
        \D : 숫자 아님
        \W : 아무 단어 아님
        \S : 공백 문자 아님
        a+ : a가 적어도 1개 이상
        a* : a가 0개 또는 여러개
        a? : a가 0개 또는 1개
        a{5} : a가 5개 == aaaaa
        a{2,5} : a가 2~5개
        a{2, } : a가 2개 이상
        a{ ,5} : a가 5개 이하
        <label>주민번호 입력 : </label>
        <input type="text" id="idNo">
        <button onclick="test3();">유효성검사</button>
        <script>
            function test3(){
                // 00  00  00  - 0   000000 (13자리 + 1)
                // 연  월  일  - 성별
    
                var regExp =
                    /^\d{2}(0[1-9]|1[0-2])(0[1-9]|1[0-9]|2[0-9]|3[01])-[1-4]\d{6}/
                    //   연   월      월      일     일     일     일    성별  나머지
                    // | 선택
    
                    if(regExp.test(document.getElementById("idNo").value)){
                        alert("정상 입력");
                    }else{
                        alert("잘못 입력");
                    }
            }
        </script>
    // 아이디 유효성 검사
                            // 첫 글자는 반드시 영어 소문자, 
                            // 아이디 길이는 4~12글자 영어 소문자 + 숫자
    
                            var reg = /^[a-z][a-z0-9]{3,11}$/;
                            
    // 이름 유효성 검사
                            // 한글, 최소2글자 이상
                            regExp = /^[가-힣]{2,}$/
    
                            // 이메일 유효성 검사
                            // 아이디 : 4글자 이상, 영어 대/소문자, 숫자, _
                            // + @
                            // 주소 앞부분 : 1글자 이상의 단어(문자)
                            // + . + 확장자 최대 세번 반복
    
                            regExp = /^[a-zA-Z0-9]{4,}@[\w]+(\.[\w]+){1,3}$/;
                                    //   아이디         주소     	 .xxx 가 3번 반복될 수 있다
                    
    
      // 전화번호 유효성 검사
                            // tel1 : 010 011 016 017 019
                            // tel2 : 숫자 3~4
                            // tel3 : 숫자 4글자
                        
                            regExp = /^01[01679]-[0-9]{3,4}-[0-9]{4}$/;
                            //            tel1     tel2     tel3
Designed by Tistory.