문제 상황
다음과 같은 문자열이 있다고 가정해 보겠습니다.
var sentence = 'My Name is John, Smith I live in US';
console.log("The original value="+sentence);
여기서 우리가 해야 할 작업은 쉼표 바로 뒤에 오는 단어까지만 남기고, 그 이후의 텍스트를 모두 제거하는 것입니다. 즉, "I live in US" 부분을 삭제하고 나머지는 그대로 유지하는 것이 목표입니다.
결과적으로 얻고자 하는 문자열은 다음과 같습니다.
My Name is John, Smith
해결 방법: match()와 split() 활용
이 문제는 match() 메서드와 split() 메서드를 함께 사용하면 간단하게 해결할 수 있습니다.
예제 코드
var sentence = 'My Name is John, Smith I live in US';
console.log("The original value="+sentence);
var expression = sentence.match(/([^]*)(.*)/)[1];
var positionForComma = sentence.match(/([^]*),(.*)/)[2].split(' ')[1]
var newValue = expression + ', ' + positionForComma
console.log("Updated="+newValue);
코드 동작 원리
/([^]*)(.*)/ 패턴은 쉼표 앞에 있는 전체 텍스트를 첫 번째 캡처 그룹으로 가져옵니다. 따라서 [1]을 참조하면 "My Name is John"이라는 문자열을 얻을 수 있습니다.
/([^]*),(.*)/ 패턴의 두 번째 캡처 그룹 [2]에는 쉼표 뒤의 텍스트인 "Smith I live in US"가 담겨 있습니다. 여기에 split(' ')[1]을 적용하면 공백을 기준으로 문자열을 나눈 뒤 두 번째 요소인 "Smith"만 추출됩니다.
마지막으로 두 결과를 쉼표와 공백으로 연결하면 원하는 최종 문자열이 완성됩니다.
실행 방법
위 프로그램을 실행하려면 Node.js 환경에서 다음 명령어를 입력합니다.
node fileName.js
여기서는 파일 이름이 demo175.js라고 가정하겠습니다.
실행 결과
프로그램을 실행하면 다음과 같은 출력을 확인할 수 있습니다.
PS C:\Users\Amit\javascript-code> node demo175.js
The original value=My Name is John, Smith I live in US
Updated=My Name is John, Smith