JavaScript에는 문자열 내 특정 단어의 모든 등장 위치를 한 번에 교체하는 내장 함수가 없습니다. 따라서 원하는 기능을 구현하려면 직접 사용자 정의 함수를 만들어야 합니다.
기본 아이디어
가장 간단한 방법은 split()과 join() 메서드를 조합하는 것입니다. 문장을 교체하고 싶은 단어를 기준으로 잘라낸 뒤, 새로운 단어로 다시 연결하면 됩니다.
예를 들어, 다음과 같은 문자열이 있다고 가정해 보겠습니다.
var sentence = "Yes, My Name is John Smith. I live in US. Yes, My Favourite Subject is JavaScript";
예제 코드
아래 코드는 replaceYesWithHi()라는 사용자 정의 함수를 통해 문장 속 모든 "Yes"를 "Hi"로 교체합니다.
var sentence = "Yes, My Name is John Smith. I live in US. Yes, My Favourite Subject is JavaScript";
console.log(sentence);
function replaceYesWithHi(word, sentence, replaceValue) {
return sentence.split(word).join(replaceValue);
}
var replacementofYesWithHi = replaceYesWithHi("Yes", sentence, "Hi");
console.log(replacementofYesWithHi);프로그램 실행 방법
위 프로그램을 실행하려면 Node.js 환경에서 다음 명령어를 입력하세요.
node fileName.js
여기서는 파일 이름이 demo240.js라고 가정합니다.
실행 결과
실행 결과는 다음과 같습니다.
PS C:\Users\Amit\javascript-code> node demo240.js Yes, My Name is John Smith. I live in US. Yes, My Favourite Subject is JavaScript Hi, My Name is John Smith. I live in US. Hi, My Favourite Subject is JavaScript
동작 원리 살펴보기
이 함수가 작동하는 과정을 단계별로 이해해 보겠습니다.
1단계 - split(): sentence.split("Yes")를 호출하면 "Yes"라는 단어를 기준으로 문자열이 분리되어 배열이 생성됩니다. 예를 들어 [", My Name is John Smith. I live in US. ", ", My Favourite Subject is JavaScript"] 형태의 배열이 만들어집니다.
2단계 - join(): 분리된 배열 요소들을 join("Hi")로 다시 합치면, 원래 "Yes"가 있던 자리마다 "Hi"가 삽입된 새로운 문자열이 완성됩니다.
참고: replaceAll() 메서드
참고로 최신 JavaScript(ES2021)부터는 replaceAll() 메서드가 표준으로 도입되어, 별도의 함수 없이도 모든 단어를 교체할 수 있습니다.
const result = sentence.replaceAll("Yes", "Hi");다만 구형 브라우저나 Node.js 버전을 지원해야 하는 경우에는 위에서 소개한 split() + join() 조합이 여전히 유용하게 사용됩니다.