Lv.2 파일명 정렬

ujinujin·2022년 2월 7일
0

코딩테스트 뿌시기

목록 보기
46/57

🤖문제

👍🏻 2022년 2월 7일

정규표현식 사용❌

<script>
  function solution(files) {
      var answer = [];
      let result = [];

      files.forEach(v => {
          let head = "";
          let num = "";
          let tail = "";

          for (let i=0; i<v.length; i++) {
              if (v[i] === " ") head+=v[i];
              else if (isNaN(v[i])) head += v[i];
              else break;
          }

          for (let i=head.length; i<v.length; i++) {
              if (!isNaN(v[i])) num+=v[i];
              else break;
          }

          for (let i=head.length+num.length; i<v.length; i++){
              tail += v[i];
          }
          result.push([head, num, tail])
      })

      result.sort((a,b) => {
          if (a[0].toLowerCase() < b[0].toLowerCase()) return -1;
          if (a[0].toLowerCase() > b[0].toLowerCase()) return 1;

          return a[1] - b[1];
      })

      result.forEach(v => {
          answer.push(v.join(""))
      })

      return answer;
  }
</script>

정규표현식 사용 ⭕

<script>
  files.forEach(v => {
    let head = v.match(/^\D+/g)[0];
    let num = v.match(/\d+/)[0];
    let tail = v.substr(head.length+num.length);
    result.push([head, num, tail])
  })
</script>

정규표현식

\D : 숫자가 아닌 문자
\d : 숫자
+ : 1회 이상 연속으로 반복되는 문자, {1,}와 동일
^ : Line 시작에서 일치
profile
백수와 취준생 그 사이 어디

0개의 댓글

관련 채용 정보