function solution(string) {
var answer = '';
let list = ['zero','one','two','three','four','five','six','seven','eight','nine','ten']
let check = ''
for (let s of string) {
check += s
if (!isNaN(s)) {
answer += s;
check = ''
}
else if (list.indexOf(check) !== -1) {
answer += list.indexOf(check)
check = ''
}
}
return answer*1;
}
split과 join을 이용해 문자열일 때 나누고 숫자로 다시 합친다.
function solution(s) {
let numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
var answer = s;
for(let i=0; i< numbers.length; i++) {
let arr = answer.split(numbers[i]);
answer = arr.join(i);
}
return Number(answer);
}
digit2word 배열을 reduce로 돌며 문자열s를 정규표현식으로 검사해 해당하는 문자를 숫자로 replace한다.
const digit2word = ['zero','one','two','three','four','five','six','seven', 'eight','nine']
function solution(s) {
return Number(digit2word.reduce((ans, word, digit) => ans.replace(new RegExp(word, 'g'), digit), s));
}
정규표현식을 이용한 극단적 풀이
function solution(s) {
s = s.replace(/zero/gi, 0)
.replace(/one/gi, 1)
.replace(/two/gi, 2)
.replace(/three/gi, 3)
.replace(/four/gi, 4)
.replace(/five/gi, 5)
.replace(/six/gi, 6)
.replace(/seven/gi, 7)
.replace(/eight/gi, 8)
.replace(/nine/gi, 9)
return parseInt(s);
}
Object를 이용해 문자열과 숫자를 key, value로 나누어 replace로 교체
function solution(s) {
let charSet = {
"zero" : 0,
"one" : 1,
"two" : 2,
"three" : 3,
"four" : 4,
"five" : 5,
"six" : 6,
"seven" : 7,
"eight" : 8,
"nine" : 9,
}
for(let [key, value] of Object.entries(charSet)) {
let re = new RegExp(`${key}`,"g");
s = s.replace(re, value);
}
return parseInt(s);
}