🔻 영어가 싫어요
영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.
입출력 예
numbers result "onetwothreefourfivesixseveneightnine" 123456789 "onefourzerosixseven" 14067
👀
객체를 써서 풀어야 할 것 같은데 처음에는 replace로 접근했다가 꼬여버린.....😇
function solution(numbers) {
let list = {
'zero' : '0', 'one' : 1, 'two' : 2,
'three' : 3, 'four' : 4, 'five' : 5,
'six' : 6, 'seven' : 7, 'eight' : 8,
'nine' : 9
}
let target = '';
let answer = '';
numbers.split('').forEach(v => {
// number의 요소를 target에 하나씩 추가하고
target += v;
// 객체에 해당 값이 있다면
if (list[target]) {
// 답에 value값 추가하고
answer += list[target];
// target 초기화
target = ''
}
})
return Number(answer);
}
function solution(numbers) {
const obj = {
zero: 0, one: 1, two: 2, three: 3, four: 4,
five: 5, six: 6, seven: 7, eight: 8, nine: 9
};
const num = numbers.replace(/zero|one|two|three|four|five|six|seven|eight|nine/g, (v) => {
return obj[v];
});
return Number(num);
}
replace함수는 문자열 내에 바꾸고 싶은 부분을 바꾸려는 값으로 바꿀 수 있는 함수이다.
let newStr = str.replace(정규식|부분 문자열, 새로운 부분 문자열|함수)
정규식
정규식에 일치하는 부분 문자열을 새로운 부분 문자열이나 지정된 함수로 치환할 수 있다.
부분 문자열
문자 또는 문자열을 대체하려는 부분 문자열로 바꾼다. 전체 문자열에서 찾은 첫 번째만 새로운 부분 문자열로 대체된다.
새로운 부분 문자열
지정된 부분 문자열 혹은 정규식을 대치할 새로운 부분 문자열
✅ 함수
주어진 정규식 또는 부분 문자열에 일치하는 요소를 대체할 때 사용하는 함수
let numbers = "onetwothreefour";
numbers.replace(/one|two|four/g, (v) => console.log(v));
// one
// two
// four
문자열에서 pattern과 일치하는 모든 값을 새로운 문자열로 변환한다. 또한 찾으려는 문자열에 정규표현식을 사용할 수 있다. 이때는 반드시 g옵션을 사용해야 한다.
'<a href="./member">회원정보</a>'.replaceAll(/<a (.+ )?href="([^"]+)"([^>]+)?>/gi,'<a href="#">')