문자열 안에 있는 특정 텍스트들이 해시(#) 같은 특수 문자로 감싸져 있고, 이 부분을 실제 값으로 교체해야 하는 경우가 종종 있습니다. 이럴 때 정규식과 함께 replace()와 shift() 메서드를 조합하면 간단하게 처리할 수 있습니다.
예제 문자열 살펴보기
다음과 같은 문자열이 있다고 가정해 보겠습니다. #yourName#과 #marks#처럼 일부 텍스트가 특수 문자 #로 둘러싸여 있습니다.
var values = "My Name is #yourName# and I got #marks# in JavaScript subject";
이제 #로 감싸진 부분을 유효한 값으로 교체해야 합니다.
replace()와 shift()를 활용한 해결 방법
replace() 메서드와 정규 표현식을 사용하면 #로 감싸진 모든 텍스트를 찾아낼 수 있으며, 여기에 배열의 shift() 메서드를 조합하면 매칭되는 순서대로 값을 하나씩 꺼내어 순차적으로 치환할 수 있습니다.
코드 예제
var values = "My Name is #yourName# and I got #marks# in JavaScript subject"; const originalValue = ["David Miller", 97]; var result = values.replace(/#([^#]+)#/g, _ => originalValue.shift()); console.log(result);
코드 설명
/#([^#]+)#/g: # 사이에 있는 텍스트를 전역(g)으로 검색하는 정규 표현식입니다._ => originalValue.shift(): 매칭될 때마다 배열의 첫 번째 요소를 꺼내어 해당 자리에 삽입합니다.
프로그램 실행하기
위 프로그램을 실행하려면 다음 명령어를 사용합니다. 파일 이름은 demo298.js입니다.
node fileName.js
실행 결과
위 코드를 실행하면 콘솔에 아래와 같은 결과가 출력됩니다.
PS C:\Users\Amit\javascript-code> node demo298.js My Name is David Miller and I got 97 in JavaScript subject
출력 결과를 보면 #yourName#은 David Miller로, #marks#는 97로 성공적으로 치환된 것을 확인할 수 있습니다. 이 방법은 템플릿 문자열의 플레이스홀더를 동적으로 교체할 때 매우 유용합니다.