👍🏻 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 시작에서 일치