반응형
문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 * 으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
제한 조건
- s는 길이 4 이상, 20이하인 문자열입니다.
문제 풀이
function solution(num) {
const numLength = num.length - 4;
return "*".repeat(numLength) + num.substring(numLength);
}
매개변수 - 4 길이만큼 repeat() 메서드로 별을 찍었다. 그리고 substring()*으로 이후 뒷자리 값을 출력했다.
다른 사람 풀이
function hide_numbers(s) {
return s.replace(/\d(?=\d{4})/g, "*");
}
정규식*은 아직 잘 못외웠는데 멋있는 것 같다. 어떻게 저렇게 쓰지??
*substring()
string 객체의 시작 인덱스로 부터 종료 인덱스 전 까지 문자열의 부분 문자열을 반환한다.
str.substring(indexStart[, indexEnd])
indexStart로부터 문자를 추출하지만 indexEnd를 포함하지 않을 수 있다. 0보다 작은 인자 값을 가지는 경우에는 0으로, stringName.length 보다 큰 인자 값을 가지는 경우, stringName.length 로 처리된다. NaN 값은 0으로 처리된다.
- indexStart : 반환문자열의 시작 인덱스
- indexEnd : 옵션. 반환문자열의 마지막 인덱스 (필수 x)
*정규표현식(정규식)
정규 표현식은 문자열에 나타는 특정 문자 조합과 대응시키기 위해 사용되는 패턴이다. 자바스크립트에선 객체이다.
정규식을 만드는 방법엔 두 가지가 있다.
- 정규식 리터럴(슬래쉬"/"로 감싸는 패턴)을 사용하는 방법
정규식 리터럴은 스크립트가 불러와질 때 컴파일된다. 만약 정규식이 상수라면 이렇게 사용하는 것이 성능 향상에 도움이 될 수 있다.
var re = /ab+c/;
- RegExp 객체의 생성자 함수를 호출하는 방법도 있다.
생성자 함수를 사용하면 정규식이 실행 시점에 컴파일된다. 정규식의 패턴이 변경될 수 있는 경우, 혹은 사용자 입력과 같이 다른 출처로부터 패턴을 가져와야 하는 경우 사용.
var re = new RegExp("ab+c");
반응형