function solution(s) {
const numberToWord = {
0: 'zero', 1: 'one', 2: 'two', 3: 'three', 4: 'four',
5: 'five', 6: 'six', 7: 'seven', 8: 'eight', 9: 'nine'
};
let word = '';
let number = '';
for (let char of s) {
if (isNaN(char)) {
word += char;
if (Object.values(numberToWord).includes(word)) {
number += Object.keys(numberToWord).find(key => numberToWord[key] === word);
word = '';
}
} else {
number += char;
}
}
return Number(number);
}
numberToWord 객체를 통해 숫자와 영단어 매핑
반복문 for..of
isNaN 현재 문자가 숫자인지 체크하고 그에 따라 word number에 문자를 추가한다
numberToWord 객체에 속한 영어단어가 현재 word에 포함되어있는지 확인후 들어 있다면 현재까지 word에 해당하는 숫자를 찾아 number에 추가한다
다른 풀이
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);
}
답변 보자마자 좀 띵했다.. 왜 생각을 못했을까
for 반복문
s 문자는 split 함수와 join 함수를 사용하여 문자열을 분리하고 결합한다
function solution(s) {
let numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
for (let i = 0; i < numbers.length; i++) {
let regex = new RegExp(numbers[i], 'g');
s = s.replace(regex, i);
}
return Number(s);
}