function solution(new_id) {
const str = (new_id
.toLowerCase()
.replace(/[^a-z0-9\\-_.]/g, '')
.replace(/\\.+/g, '.')
.replace(/^\\.|\\.$/g, '') || 'a')
.slice(0, 15)
.replace(/\\.$/, '');
const len = str.length;
const answer = len > 2 ? str : str + str[len - 1].repeat(3 - len);
return answer;
}
정규식을 검색해가며 풀었다.
이런문제는 정규식을 사용하는게 베스트인것 같음.
정규식을 외우고 있어야 할 것 같다.
padEnd()
를 사용해서 더 간결하게 바꿀 수 있다.
function solution(new_id) {
const id = new_id
.toLowerCase()
.replace(/[^\\w-_.]/g, '')
.replace(/\\.+/g, '.')
.replace(/^\\.|\\.$/g, '')
.padEnd(1, 'a')
.slice(0, 15).replace(/\\.$/, '');
const answer = id.padEnd(3, id[id.length - 1]);
return answer;
}
str.toLowerCase()
→ String.toLowerCase()
사용
str.replace(/[^a-z0-9-_.]/g, '')
str.replace(/[^\\w-.]/g, '')
→ 문자 클래스 []
와 캐럿 ^
사용
/[^a-z0-9-_.]/
: 소문자(a-z), 숫자(0-9), 빼기(-), 밑줄(_), 마침표(.) 를 제외한 모든 문자/[^\\w-.]/
: 밑줄을 포함하여 기본 라틴 알파벳의 모든 영숫자 문자와 일치하는 문자를 의미하는 [A-Za-z0-9_]
는 \\w
로 치환할 수 있다.[]
)-
), 캐럿(^
)