문자열을 다루다 보면 특정 구분자(예: 쉼표)를 다른 값으로 바꿔야 하는 경우가 자주 있습니다. 이번 글에서는 replace() 메서드와 정규식(Regular Expression)을 활용해 문자열 속 쉼표를 원하는 값으로 교체하는 방법을 알아보겠습니다.
예제 문자열
다음과 같이 쉼표가 포함된 세 개의 문자열이 있다고 가정해 보겠습니다.
"My Favorite subject is," "My Favorite subject is, and teacher name is Adam Smith" "My Favorite subject is, and got the marks 89"
해결 방법: replace()와 정규식 조합
쉼표를 교체하려면 자바스크립트의 replace() 메서드에 정규식을 인수로 전달하면 됩니다. 아래 예제에서 사용한 정규식 /,(?=[^]*$)/는 문자열에서 마지막 쉼표만 찾아내어 지정한 값으로 바꿔줍니다.
코드 예제
const makingRegularExpression = /,(?=[^]*$)/;
replaceComma("My Favorite subject is,");
replaceComma("My Favorite subject is, and teacher name is Adam Smith");
replaceComma("My Favorite subject is, and got the marks 89");
function replaceComma(values){
console.log(values, " ==== replaced by JavaScript ==== ", values.replace(makingRegularExpression, " JavaScript"));
}프로그램 실행 방법
위 코드를 작성한 후 Node.js 환경에서 다음 명령어로 실행할 수 있습니다.
node fileName.js
여기서는 파일 이름을 demo164.js로 저장했다고 가정합니다.
실행 결과
위 프로그램을 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.
PS C:\Users\Amit\javascript-code> node demo164.js My Favorite subject is, ==== replaced by JavaScript ==== My Favorite subject is JavaScript My Favorite subject is, and teacher name is Adam Smith ==== replaced by JavaScript ==== My Favorite subject is JavaScript and teacher name is Adam Smith My Favorite subject is, and got the marks 89 ==== replaced by JavaScript ==== My Favorite subject is JavaScript and got the marks 89
정규식 패턴 해설
사용된 정규식 /,(?=[^]*$)/를 하나씩 살펴보면 다음과 같습니다.
- `,` : 일반적인 쉼표 문자를 의미합니다.
- `(?=[^]*$)` : 전방 탐색(lookahead)으로, 뒤따르는 문자들 중 쉼표가 없고 문자열 끝(
$)까지 이어지는 경우에만 매칭됩니다. 즉, 문자열의 마지막 쉼표만 선택합니다.
만약 문자열 내의 모든 쉼표를 한 번에 교체하고 싶다면, 전역 플래그(g)를 추가한 /,/g 정규식을 사용하면 됩니다. 상황에 맞게 패턴을 조절하여 활용해 보시기 바랍니다.