문제 설명
영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.
제한사항
numbers는 소문자로만 구성되어 있습니다.
numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다.
1 ≤ numbers의 길이 ≤ 50
"zero"는 numbers의 맨 앞에 올 수 없습니다.
입출력 예
numbers result
"onetwothreefourfivesixseveneightnine" 123456789
"onefourzerosixseven" 14067
const number = ["zero","one","two","three", "four", "five", "six", "seven", "eight", "nine"]
number
배열의 각 요소를 돌리고,numbers
문자열에서 현재 순회 중인 number
배열의 요소를 찾아 해당 숫자의 인덱스로 대체해준다. (split()
과 join()
사용)numbers = numbers.split(number[i]).join(i)
numbers
문자열은 영단어 숫자가 모두 숫자 값으로 대체된 문자열임.+
로 피연산자를 숫자로 변환한다.+numbers
function solution(numbers) {
const number = ["zero","one","two","three", "four", "five", "six", "seven", "eight", "nine"]
for(let i = 0 ; i<number.length; i++){
numbers = numbers.split(number[i]).join(i)
}
return +numbers
}
알게된 것
단항 덧셈 연산자 +
index
로 합치고 싶을 땐join(i)
numbers.split(number[i])
let abc = 'zeroonetwo';
console.log(abc.split('one'))
// ['zero', 'two']
abc.split('one').join(1)
// 'zero1two'
let a = 'onefourzerosixseven'
a.split('zero')
// ['onefour', 'sixseven']
const arr = ['zero', 'two']
arr.join('1')
// 'zero1two'