Problem
- Your task is to write a function maskify which changes all but the last four characters into #.
- 마지막 4개의 문자를 제외한 모든 문자를 #로 변경한다.
Solution 01
function maskify(str) {
let result = '';
for (let i = 0; i < str.length; i++) {
if (i < str.length - 4) {
result += '#';
} else {
result += str[i];
}
}
return result;
}
maskify('12345678'); // ####5678
maskify('48162537'); // ####2537
Solution 02
function maskify(str) {
let arr = str.split('');
for (let i = 0; i < arr.length - 4; i++) {
arr[i] = '#';
}
return arr.join('');
}
maskify('12345678'); // ####5678
maskify('48162537'); // ####2537
split()
: 문자열을 부분 문자열로 분할하고, 새 배열로 반환한다.
join()
: 배열의 모든 element를 결합하고, 새 문자열로 반환한다.
Solution 03
function maskify(str) {
return str.slice(0, -4).replace(/./g, '#') + str.slice(-4);
}
maskify('12345678'); // ####5678
maskify('48162537'); // ####2537
slice()
: 문자열/배열의 일부를 추출하고, 새 문자열/배열로 반환한다.
replace()
: 대응되는 문자열을 찾아 다른 문자열로 치환한다.
Solution 04
function maskify(str) {
return str.replace(/.(?=....)/g, '#');
}
maskify('12345678'); // ####5678
maskify('48162537'); // ####2537
x(?=y)
: y가 뒤따라오는 x에 대응
Solution 05
function maskify(str) {
return str.replace(/.(?=.{4})/g, '#');
}
maskify('12345678'); // ####5678
maskify('48162537'); // ####2537
{n}
: 앞 문자 n개와 대응