-
[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
'Programmers > 코딩테스트 풀이' 카테고리의 다른 글
[Programmers/Level1] 숫자 문자열과 영단어 (0) 2022.01.20 [Programmers / level1] 신규 아이디 추천 (0) 2022.01.12 [Programmers / level1] 로또의 최고 순위와 최저 순위 (1) 2021.12.19 [Programmers / level1] 완주하지 못한 선수 (1) 2021.12.07 [Programmers / level1] 직사각형 별찍기 (0) 2021.12.02