프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *
으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
phone_number | return |
---|---|
"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()
는 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열을 반환한다. 사용 방법은 아래와 같다.
<script>
str.repeat(count);
</script>
count
는 문자열을 반복할 횟수이고, 0과 양의 무한대 사이의 정수여야 한다.
substr()
문자열에서 특정 위치에서 시작하여 특정 문자 수 만큼의 문자들을 반환한다. 사용 방법은 아래와 같다.
<script>
str.substr(start, length);
</script>
start
는 추출하고자 하는 문자열의 시작 위치이며, length
는 추출하고자 하는 문자열의 총 합이다. length
값을 지정하지 않으면 start
부터 문자열 전체를 값으로 한다.
start
가 양수일 경우, 문자의 길이 보다 작으면 빈문자열이 리턴된다.
start
가 음수일 경우, start
의 index는 문자열의 뒤에서부터 시작된다.
그.런.데.
MDN에서 위와 같은 경고 메세지가 있었다. 앞으론 slice()
써야겠지...
slice()
는 어떤 배열의 시작부터 끝까지에 대한 얕은 복사본을 새로운 배열 객체로 반환한다. 원본 배열은 바뀌지 않는다. 사용 방법은 아래와 같다.
<script>
str.slice(start, end);
</script>
start
는 검색구간의 시작지점이며, end
는 검색구간의 종료지점이다. end
값을 지정하지 않으면 str.length-1
을 입력한 것과 같다. start
가 음수일 경우, start
의 index는 문자열의 뒤에서부터 시작된다.
substring
은 string
객체의 시작 인덱스로 부터 종료 인덱스 전 까지 문자열의 부분 문자열을 반환한다. 사용 방법은 아래와 같다.
<script>
str.substring(start, end);
</script>
start
는 반환문자열의 시작 인덱스, end
는 반환문자열의 마지막 인덱스이다. end
가 생략된 경우, 문자의 끝까지 모든 문자를 추출한다. start
와 end
가 같을 경우 빈 문자열을 추출한다. 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>