코딩 테스트/test_javaScript

[코딩테스트/javaScript] 숫자 문자열과 영단어 ⭐️⭐️

ijooha 2025. 1. 6. 16:10

처음에는 그저 반복문을 돌려 문자가 매칭되면, .replace 메소드를 사용해 대체시켜주려고 생각했다.

그리고 하나가 아닐 수도 있으니 if문과 while을 동시에 써 모든 글자가 대체될 때 멈추는?

 

그런데 다른 방법이 있을 거 같았음. 그래서 한번에 조건을 만족시키는 모든 대상에 적용시키는 함수가 없나 찾아봄

그리고 정규식이라는 게 있다는 걸 알게됨!

 

정규식 RegExp

const regex = new RegExp(pattern, flag);

이런식으로 사용하는데, 

pattern :  찾고자 하는 패턴 (여기서는 영어로된 단어들이 해당됨)

flag : 다음 세가지로 구성됨

g(global) : 문자열 내 모든 매칭을 검색

• i (ignore case) : 대소문자를 무시

• m (multiline) : 여러 줄 처리

예시 : /hello/g 는 모든 문자열에서 모든 'hello'를 검색

 

그래서 적용~!

function solution(s) {
    const alp = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
    
    alp.forEach((el,ind) => {
        const regex = new RegExp(el, 'g');
        s = s.replace(regex, ind);
    });
    return Number(s);
}