function solution(new_id) {
let string = '';
//소문자변환
string = new_id.toLowerCase()
//알파벳 소문자, 빼기, 밑줄, 마침표 제외하고 제거
.replace(/[^a-z0-9\.\-\_]/gi,'')
//마침표가 2번 이상 연속된 경우 하나의 마침표로 치환
.replace(/\.+/g,'.')
//마침표가 처음이나 끝에 위치한다면 제거
.replace(/^\.+|\.+$/g,'');
//빈 문자열이라면 'a'를 대입하고 아니라면 15자까지만 자르기
string = string? string.substr(0, 15) : 'a';
//끝에 위치한 마침표 제거
string = string.replace(/\.+$/g,'');
//글자수가 2이하인 경우 마지막 문자만 전체 글자수가 3이상이 될때까지 반복해서 끝에 붙이기
while(string.length <= 2) {
string = string + string.substr(string.length-1);
}
return string;
}
문자열안에서 특정 문자에 대한 치환이나 제거는 확실히 정규식이 간단한 것 같아 정규식으로 풀어보았다.
나도 정규식에는 익숙하지가 않아서 어설픈 부분이 있긴 한데, 다른 분들의 풀이를 보면 .replace(/[^a-z0-9\.\-\_]/gi,'')
이부분을 .replace(/[^\w-_.]/g, '')
로 쓸수 있다. \w
는 [A-Za-z0-9_]
와 대응된다.
또 string.length < 2 인경우에는 반복문을 쓰지 않고 answer.charAt(string.length - 1).repeat(3 - string.length)
로 쓸수 있다.
'Algorithm > 문제풀이' 카테고리의 다른 글
Programmers - 메뉴 리뉴얼 / Javascript (0) | 2021.02.18 |
---|---|
Programmers - 문자열 압축 / Javascript (1) | 2021.02.17 |
Programmers - 크레인 인형뽑기 게임 / Javascript (0) | 2021.02.14 |
Programmers - 124 나라의 숫자 / Javascript (0) | 2021.02.14 |
Programmers - 단어변환 / Javascript (0) | 2021.01.14 |