말랑한 하루

[Programmers] 신규 아이디 추천 (Lv 1, JavaScript) 본문

문제풀이/Programmers

[Programmers] 신규 아이디 추천 (Lv 1, JavaScript)

지수는말랑이 2022. 6. 29. 00:33
반응형

[ 학습 내용 ]
정규표현식

1) replace를 활용한다.

2) 메타문자에 포함되는 문자를 기본 문자열로 사용하고 싶다면 대괄호[] 안에 넣어주고 대괄호를 쓰지 않는 경우 백슬래시\ 를 활용해서 문자임을 표현한다.

3) 다음은 이번 문제에 사용된 정규식이다.

- \w  : 영소문자+ "_"를 의미함. ASCII로는 [A-Za-z0-9_]
- [^]  : 부정을 의미한다
- +    : 1번 이상 발생하는 패턴과 일치시킴
- \.    : .이 메타문자에 포함되므로 \사용
- ^    : 시작점과 일치하는지 판별
- $    : 끝점과 일치하는지 판별
- |     : 모든 판별조건 부합하기
- ^$   : 두개다 요소를 안넣어줌으로써 빈 문자열임을 의미

[ 소스 코드 ]

function solution(new_id) {
    var answer = new_id
        .toLowerCase()
        .replace(/[^\w-.]/g,"")
        .replace(/\.+/g,".")
        .replace(/^\.|\.$/,"")
        .replace(/^$/,"a")
        .slice(0, 15)
        .replace(/\.$/,"")
    let length = answer.length;
    return answer = length > 2 ? answer : answer + answer.charAt(length - 1).repeat(3 - length);
}

[ 심화 코드 ]

function solution(new_id) {
    const id = new_id
        .toLowerCase()
        .replace(/[^\w\d-_.]/g, '')
        .replace(/\.{2,}/g, '.')
        .replace(/^\.|\.$/g, '')
        .padEnd(1, 'a')
        .slice(0, 15)
        .replace(/^\.|\.$/g, '')        
    return id.padEnd(3, id[id.length-1])
}

[ 코드 분석 ]

- padEnd()   : 현재 문자열 끝(우측)부터 다른 문자열을 채워 주어진 길이를 만족하는 새로운 문자열을 반환한다.

- StartEnd()  : 현재 문자열 시작(좌측)부터 다른 문자열을 채워 주어진 길이를 만족하는 새로운 문자열을 반환한다.

반응형
Comments