JavaScript 핸드폰 번호 가리기

DANO PARK·2022년 5월 1일
1
post-thumbnail

Programmers JavaScript Lv.1 [핸드폰 번호 가리기]

문제설명

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

제한사항

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

입출력 예

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

제출답안

<script>
  function solution(phone_number) {
    const asterlisk = "*".repeat(phone_number.length -4);
    const number = phone_number.substr(-4);
    const answer = asterlisk + number;
    return answer;
  }
  // => 테스트 통과!
</script>

정답해설

repeat 알아보기

repeat()는 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열을 반환한다. 사용 방법은 아래와 같다.

<script>
  str.repeat(count);
</script>

count는 문자열을 반복할 횟수이고, 0과 양의 무한대 사이의 정수여야 한다.

substr, slice, substring 알아보기

substr()

substr() 문자열에서 특정 위치에서 시작하여 특정 문자 수 만큼의 문자들을 반환한다. 사용 방법은 아래와 같다.

<script>
  str.substr(start, length);
</script>

start는 추출하고자 하는 문자열의 시작 위치이며, length는 추출하고자 하는 문자열의 총 합이다. length 값을 지정하지 않으면 start부터 문자열 전체를 값으로 한다.

start가 양수일 경우, 문자의 길이 보다 작으면 빈문자열이 리턴된다.
start가 음수일 경우, startindex는 문자열의 뒤에서부터 시작된다.


그.런.데.


MDN에서 위와 같은 경고 메세지가 있었다. 앞으론 slice() 써야겠지...

slice()

slice()는 어떤 배열의 시작부터 끝까지에 대한 얕은 복사본을 새로운 배열 객체로 반환한다. 원본 배열은 바뀌지 않는다. 사용 방법은 아래와 같다.

<script>
  str.slice(start, end);
</script>

start는 검색구간의 시작지점이며, end는 검색구간의 종료지점이다. end 값을 지정하지 않으면 str.length-1을 입력한 것과 같다. start가 음수일 경우, startindex는 문자열의 뒤에서부터 시작된다.

substring()

substringstring 객체의 시작 인덱스로 부터 종료 인덱스 전 까지 문자열의 부분 문자열을 반환한다. 사용 방법은 아래와 같다.

<script>
  str.substring(start, end);
</script>

start는 반환문자열의 시작 인덱스, end는 반환문자열의 마지막 인덱스이다. end가 생략된 경우, 문자의 끝까지 모든 문자를 추출한다. startend가 같을 경우 빈 문자열을 추출한다. start 값이 end 값보다 클 경우 두 개의 인자를 바꾼 듯 작동하게 된다. 아래의 예제를 보자.

<script>
  const str = "Hello";
  str.substring(1,3) // => "el"
  str.substring(3,1) // => "el"
</script>

정규표현식으로 표현하기

위의 문제는 정규표현식으로 출력할 수 있다.

<script>
  function solution(phone_number) {
    return phone_number.replace(/\d(?=\d{4})/g, "*");
  }
  // => 테스트 통과!
</script>

끝.
profile
단오해서 단호박!

0개의 댓글