function solution(s) {
const numStr = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
for (let i = 0; i < 10; i++) {
const str = numStr[i];
const pattern = new RegExp(str, "g"); // 정규 표현식을 동적으로 사용하려면 RegExp 객체를 생성해야 한다.
s = s.replace(pattern, i);
}
return +s;
}
function solution(s) {
const str_num = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'];
const num = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
// 반복문을 돌며 str_num[i]가 s에 있다면 num[i]로 바꿔준다.
/* for (let i = 0; i < str_num.length; i++) {
* while (s.includes(str_num[i])) {
* s = s.replace(str_num[i], num[i]);
* }
* }
*/
//while문 대신에 replaceAll을 사용해도 됩니다.
for (let i = 0; i < str_num.length; i++) {
if (s.includes(str_num[i])) {
s = s.replaceAll(str_num[i], num[i]);
}
}
return Number(s);
}
function solution(s) {
s=s.replaceAll("zero","0").replaceAll("one","1").replaceAll("two","2").replaceAll("three","3").replaceAll("four","4").replaceAll("five","5").replaceAll("six","6").replaceAll("seven","7").replaceAll("eight","8").replaceAll("nine","9")
var answer = Number(s);
return answer;
}
function solution(s) {
//각 인덱스에 대응이 되는 숫자를 넣어 준다. 0=> "zero"
let numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
var answer = s;
// split을 사용해서 각 영어를 기준으로 나누어준후 , 인덱스를 넣어서 다시 join으로 붙여준다.
for(let i=0; i< numbers.length; i++) {
let arr = answer.split(numbers[i]);
answer = arr.join(i);
}
return Number(answer);
}
function solution(s) {
const dict = {
'zero': '0',
'one': '1',
'two': '2',
'three': '3',
'four': '4',
'five': '5',
'six': '6',
'seven': '7',
'eight': '8',
'nine': '9',
}
const words = Object.keys(dict);
const numbers = Object.values(dict);
const result = [];
let charFlag = -1; // 새 영단어가 시작되는 인덱스
for (let i = 0; i < s.length; i++) {
// 숫자인 경우
if (numbers.includes(s[i])) {
result.push(s[i]);
charFlag = -1;
continue;
}
// 문자열인 경우
if (charFlag < 0) {
charFlag = i;
}
const substr = s.substring(charFlag, i + 1);
if (words.includes(substr)) {
result.push(dict[substr]);
charFlag = -1;
}
}
return parseInt(result.join(''));
}
function solution(s) {
let answer = s;
const wordList = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
wordList.forEach((word, i) => {
// 커스텀 정규표현식
const regex = new RegExp(`${word}`, "g");
answer = answer.replace(regex, i);
})
return +answer;
}
// 단순 replace 함수로만 바꾸려고 시도했으나
// "oneone" 과 같은 단어는 "one" 단어로 탐색이 되지 않습니다.
// 따라서 정규표현식을 사용하였습니다.
// 정규표현식에 변수를 넣어서 사용하려면 new 연산자로 RegExp 객체를 만들어야만 합니다.
// 정규표현식 외의 방법도 궁금하네요!
function solution(s) {
const num = ['zero','one','two','three','four','five','six','seven','eight','nine'];
for(const i of num){
if(s.includes(i)){ //문자열에 num배열의 원소들이 있다면 그 원소의 index를 가져옴
const n = num.indexOf(i);
s = s.replaceAll(i, String(n));
}
}
return Number(s);
}