120894. 영어가 싫어요

서진·2023년 5월 12일

programmers

목록 보기
14/33

🔻 영어가 싫어요

영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.

입출력 예

numbersresult
"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);
}

💡 string.prototype.replace()

replace함수는 문자열 내에 바꾸고 싶은 부분을 바꾸려는 값으로 바꿀 수 있는 함수이다.

let newStr = str.replace(정규식|부분 문자열, 새로운 부분 문자열|함수)

정규식
정규식에 일치하는 부분 문자열을 새로운 부분 문자열이나 지정된 함수로 치환할 수 있다.

부분 문자열
문자 또는 문자열을 대체하려는 부분 문자열로 바꾼다. 전체 문자열에서 찾은 첫 번째만 새로운 부분 문자열로 대체된다.

새로운 부분 문자열
지정된 부분 문자열 혹은 정규식을 대치할 새로운 부분 문자열

✅ 함수
주어진 정규식 또는 부분 문자열에 일치하는 요소를 대체할 때 사용하는 함수

let numbers = "onetwothreefour";
numbers.replace(/one|two|four/g, (v) => console.log(v));
  
// one
// two
// four

💡 string.prototype.replaceAll()

문자열에서 pattern과 일치하는 모든 값을 새로운 문자열로 변환한다. 또한 찾으려는 문자열에 정규표현식을 사용할 수 있다. 이때는 반드시 g옵션을 사용해야 한다.

'<a href="./member">회원정보</a>'.replaceAll(/<a (.+ )?href="([^"]+)"([^>]+)?>/gi,'<a href="#">')  
profile
🫧 ☁️ 🌙 👩🏻•💻 🌿 🐱 🖱 🍟 🚀 ⭐️ 🧸 🍀 💗

0개의 댓글