신규 아이디 추천

·2022년 4월 8일
0

알고리즘

목록 보기
45/47

진짜 하........ 단계순서로 안맞춰서 풀면 오답이다
무.조.건 순서대로 실행을 해야해서 조금 고장이 났는데
걍 코드가 고장났다. 정규식으로 쭉 밀고나갔으면 괜찮았는데 그게 안돼....

function solution(new_id) {
     var answer = '';
    let str = new_id.toLowerCase().replace(/[^\w\.\-]/gi,"").replace(/\.{2,}/gi,".").split("")
    if(str[0]==="." ){
        str.splice(0,1)
    }
    if(str[str.length-1] === "."){
        str.splice(-1,1)
    }
    if(str.length === 0){
        str.push("a")
    }
    if (str.length <= 2){
        for(let i =str.length; i <= 2; i++){
            str.push(str[str.length-1])
        }
    }
    if(str.length >= 16){
        answer = str.slice(0,15)
    } else {
        answer = str
    }
     if(answer[answer.length-1] === "."){
    answer.splice(-1,1)
  }
    return answer.join("");
}
  1. 모든 문자를 소문자로 변환, replace 정규식으로 숫자,문자, - _ . 을 제외한 모든 문자 제거
  2. 정규식 한번 더 사용해서 .이 두개이상 있으면 1개로 변환
  3. 점이 배열의 맨 앞 혹은 맨 뒤에 있다면 제거
  4. 배열의 길이가 0이라면 a를 넣어주고
  5. 배열의 길이가 3보다 모자르면 맨 뒤에 문자로 3개가 될 때 까지 반복
  6. 만약 16자리가 넘어간다면 인덱스 0부터 15까지만 남겨놓고 제거
  7. 제거를 하다보니 .이 또 생겼을 수 있으니 또다시 제거
  8. 결과값을 리턴

순서대로 풀어나가는게 재밌었는데...
정규식.....으로 딱 8줄로 처리한 분이 있어서 ^^.. . . . .
정규식...공부...해야겠지....?ㅎ...

profile
물류 서비스 Backend Software Developer

0개의 댓글