https://github.com/FUNco247/Co_Test_Solution/blob/master/stringToNum.js
"one23onetwo3" 처럼 숫자와 숫자영단어로 조합된 input을 123123 과 같은 숫자로 변환하여 return하는 문제다.
function solution(s) {
const eng = [
"one",
"two",
"three",
"four",
"five",
"six",
"seven",
"eight",
"nine",
"zero",
];
const num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
for (let i = 0; i < eng.length; i++) {
const regex = new RegExp(eng[i], "gi");
s = s.replace(regex, `${num[i]}`);
}
return Number(s);
}
String.replace( "before", "after" )
메소드에서 "before" 에 정규식 표현을 사용하여 일치하는 것을 "after"로 변환할 수 있음.
String.replace(/one/g, 1)
처럼 g 와 함께 사용하면 문자열에서 모든 one을 1로 바꾼다. (g없이 사용하면 한 건만 바꿈) // i와 함께 사용하면 대소문자 구분 안함.
String.replace(/one/g, 1)
메소드의 one
자리에 처음에는 '${num[i]}'
와 같은변수를 바로 담고싶었지만 불가능했음. => 정규식 표현 안에 변수를 담는법을 참고함.
코딩테스트 초보레벨 단계에서 정규식표현에 대한 사용이 정말 빈출된다. 그만큼 기초지식이라고 생각하고 꾸준히 공부해봐야겠다. 그리고 new 에 대해서도.
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);
}