핸드폰 번호 가리기(Javascript)

·2022년 9월 16일
0
post-thumbnail

프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.

제한 조건

phone_number는 길이 4 이상, 20이하인 문자열입니다.

입출력 예

phone_numberreturn
"01033334444""***4444"
"027778888""*8888"

나의 풀이

function solution(phone_number) {
   return phone_number.replace(/\d/g,'*').slice(0,-4) + phone_number.slice(-4)
}

원래는 Replace를 사용해서 깔끔하게 뒤의 4자리를 남기고 앞을 *로 바꿔주고 싶었는데, 정규표현식 공부를 대충 해 뒀다가 어떻게 정규 표현식으로 바꿀지 몰라서 결국 slice()를 사용해서 따로따로 잘라 줬다. 참고로 slice()는 string과 array 둘 다의 메소드라서 문자도 자를 수 있고 배열도 자를 수 있다.

이 기회에 정규표현식을 다시 공부했다. 참고는 드림코딩.
그리고 이 사이트에서 정규표현식을 쓰면 간단하게 설명을 해주고 어디가 선택되는지 시각적으로 보여 주므로 참고하기.

참고할 풀이 1

function hide_numbers(s) {
  return s.replace(/\d(?=\d{4})/g, "*");
}

역시 깔끔하게 정규표현식으로 선택하는 방법이 있었다! 기본적으로 정규표현식은 //안에 찾을 값의 형식을 넣어 준다. /뒤에 있는 것은 플래그라고 하는데 고급 탐색을 하게 해 준다. 여기서 쓰인 플래그는 g인데, 일치하는 여러개의 값을 저장하도록 해 준다. 앞부분 // 사이에 있는 것은 찾을 문자열이다. \d는 숫자를 찾게 해 준다. ?=는 전방탐색이라고 하는데, = 뒤에 오는 문자를 제외하고 탐색하게 된다. 반드시 괄호 안에 넣어 줘야 한다. {}는 갯수를 의미한다.

결국, \d로 숫자 전체를 찾아준 다음, (?=\d{4})로 4글자의 문자를 제외하고 탐색하라고 명렁을 해 줬다. 그리고 플래그를 g로 줘서 여러개의 숫자를 저장하도록 해 줬다.

이후에 replace()에 정규표현식을 할당해 \*로 바꾸어 주었다.

참고할 풀이 2

function hide_numbers(s){
  var result = "*".repeat(s.length - 4) + s.slice(-4);
  return result;
}

나는 replace()로 앞부분을 *로 바꿔 줬는데, 여기서는 repeat()함수를 써 줬다. repeat()은 앞 부부분의 문자를 지정한 수만큼 반복해 준다.

참고할 풀이 3

const solution = n => [...n].fill("*",0,n.length-4).join("")

이 풀이는 문자를 [...]을 이용해 배열로 만들어준 후 *로 만들고 마지막에 배열을 문자로 합쳐 줬다.

profile
전 이것도 몰라요

0개의 댓글