[PROGRAMMERS] 신규 아이디 추천

오다혜·2022년 1월 2일
0
post-thumbnail

🌱 나의 풀이

  • 처음 푼 풀이
function solution(new_id) {
    let str = new_id.toLowerCase();

    const reg2 = /[^0-9a-z\-_\.]/g;
    str = str.replace(reg2, "");

    const reg3 = /\.+/g;
    str = str.replace(reg3,".");

    const reg4 = /^[\.]|[\.]$/g;
    str = str.replace(reg4, "");

    if(!str) str = "a";

    const reg6 = /[\.]$/g;
    str = str.substring(0, 15).replace(reg6, "");

    const len = str.length;
    if(len <= 2){
        for(let i = 0; i < 3 - len; i++){
            str += str.substring(str.length-1);
        }
    }

    return str;
}
  • 개선한 코드
function solution(new_id) {
    let str = new_id.toLowerCase()
                    .replace(/[^\w-_.]/g, "")
                    .replace( /\.+/g,".")
                    .replace(/^\.|\.$/g, "")
                    .replace(/^$/g, "a")
                    .substring(0, 15).replace(/\.$/g, "");
    
    return str.padEnd(3, str[str.length-1]);
}

처음 풀이가 꽤 괜찮다고 생각했는데, 막상 정답 코드를 보니 chaining을 참 잘 써서 푼 코드가 많아서 반성했다. 정규식도 바로바로 나오지 않고 결국 검색해서 풀었다.. 정규식 공부도 다시 해야 할 것 같다.

정답 코드를 보면서 padEnd 라는 함수가 있다는 것을 알게 되었다. 원하는 길이만큼 해당 문자열로 채워주는 문자열 함수다.

profile
프론트엔드에 백엔드 한 스푼 🥄

0개의 댓글