스택큐힙리스트

자바스크립트에서 문자열의 모든 발생을 치환하는 방법은 무엇인가요? 본문

카테고리 없음

자바스크립트에서 문자열의 모든 발생을 치환하는 방법은 무엇인가요?

스택큐힙리스트 2023. 3. 21. 14:07
반응형

주어진 문자열:

s = Test abc test test abc test test test abc test test abc;

위의 문자열에서 abc 의 첫 번째 발생만 제거하는 것으로 보입니다.

s = s.replace('abc', '');

그것의 모든 발생을 어떻게 대체하나요?

답변 1

2020년 8월 현재: ECMAScript 2021 언어 사양에 정의된 String.replaceAll() method 에 대한 Modern browsers have support.

더 오래된/레거시 브라우저용:

function escapeRegExp(string) {

return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string

}

function replaceAll(str, find, replace) {

return str.replace(new RegExp(escapeRegExp(find), 'g'), replace);

}

이 답변이 어떻게 진화했는지 살펴보겠습니다.

str = str.replace(/abc/g, '');

만약 'abc'가 변수로 전달된다면 어떻게 되는가요?

var find = 'abc';

var re = new RegExp(find, 'g');

str = str.replace(re, '');

Click Upvote의 댓글에 대한 답변으로, 더욱 간단하게 요약할 수 있습니다:

function replaceAll(str, find, replace) {

return str.replace(new RegExp(find, 'g'), replace);

}

참고: 정규식은 특수 (메타) 문자를 포함하므로 이전처럼 위의 find 함수에 인수를 막연하게 전달하는 것은 위험합니다. 이것은 Mozilla Developer Network 의 JavaScript Guide on Regular Expressions 에서 다음 유틸리티 함수를 제시하여 다루고 있습니다. (이 답변이 처음 작성될 때보다 최소 두 번 이상 변경되었으므로 MDN 사이트에서 가능한 업데이트를 확인해야 합니다.)

function escapeRegExp(string) {

return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string

}

위의 replaceAll() 함수를 더 안전하게 만들려면 escapeRegExp를 포함하여 다음과 같이 수정할 수 있습니다.

function replaceAll(str, find, replace) {

return str.replace(new RegExp(escapeRegExp(find), 'g'), replace);

}

답변 2

자바스크립트에서 문자열의 모든 발생을 바꾸는 방법을 아십니까? 문자열을 대체하려면 우선 replace() 메서드를 사용해야 합니다. 이 메서드는 문자열에서 특정 문자열이 발견되면, 새 문자열로 대체합니다.

replace() 메서드의 첫 번째 인수는 대체할 문자열을, 두 번째 인수는 새 문자열을 지정합니다. 그러나 이 메서드는 일치하는 첫 번째 문자열만 바꿉니다.

예를 들어, 다음과 같은 문자열이 있다고 가정해보겠습니다.

var str = these are some words and some more words;

우리는 words를 text로 바꾸고 싶습니다. 다음과 같이 코드를 작성합니다.

var newStr = str.replace(words, text);

이제 newStr에는 these are some text and some more text가 저장됩니다.

하지만, replace() 메서드는 일치하는 첫 번째 문자열만 바꿉니다. 따라서 문자열의 모든 발생을 바꾸려면 정규식을 사용해야 합니다.

var regex = /words/g;

var newStr = str.replace(regex, text);

위의 코드에서 /words/g는 정규식입니다. g 옵션은 전체 문자열에서 모든 발생을 대체하도록 합니다.

이제 newStr에는 these are some text and some more text가 저장됩니다.

replace() 메서드와 정규식을 사용하여 자바스크립트에서 문자열의 모든 발생을 바꿀 수 있습니다.

반응형
Comments