다음과 같은 문자열이 있다고 가정해 보겠습니다.
var sentence = "My Name is John Smith. I live in UK. My Favourite Subject is JavaScript."
위 문장에서 다음 단어들을 특정 값인 "Not Available"로 교체해야 하는 상황입니다.
var values = ['John', 'Smith', 'UK', 'JavaScript']
따라서 최종적으로 원하는 출력 결과는 다음과 같습니다.
My Name is Not Available Not Available. I live in Not Available. My Favourite Subject is Not Available.
이런 작업은 정규 표현식(RegExp)을 활용하면 간단하게 구현할 수 있습니다. 핵심 아이디어는 배열의 각 요소를 파이프(|) 기호로 연결해 하나의 OR 조건 패턴으로 만드는 것입니다.
예제 코드
다음은 전체 코드입니다.
var values = ['John', 'Smith', 'UK', 'JavaScript']
var sentence = "My Name is John Smith. I live in UK. My Favourite Subject is JavaScript."
var regularExpression = new RegExp(values.join('|'), 'gim')
sentence = sentence.replace(regularExpression, 'Not Available');
console.log(sentence);
코드 동작 원리
values.join('|'): 배열 요소를 파이프(|)로 연결하여 'John|Smith|UK|JavaScript'라는 OR 조건 패턴을 생성합니다.'gim'플래그 : g(문자열 전체 검색), i(대소문자 구분 없음), m(여러 줄 검색) 옵션을 함께 적용합니다.sentence.replace(): 패턴과 일치하는 모든 단어를 'Not Available'로 일괄 치환합니다.
위 프로그램을 실행하려면 Node.js 환경에서 다음 명령어를 입력합니다.
node fileName.js
여기서는 파일 이름이 demo279.js라고 가정하겠습니다.
출력 결과
콘솔에는 다음과 같은 결과가 출력됩니다.
PS C:\Users\Amit\javascript-code> node demo279.js
My Name is Not Available Not Available. I live in Not Available. My Favourite Subject is Not Available.
이처럼 new RegExp()와 join('|')을 조합하면 여러 개의 단어를 별도의 반복문 없이 단 한 번의 치환 작업으로 처리할 수 있어 코드가 훨씬 간결해집니다.