일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 코딩
- 보안
- 머신러닝
- 사이버보안
- 컴퓨터공학
- 알고리즘
- 파이썬
- 데이터과학
- 소프트웨어
- 자바스크립트
- 버전관리
- Yes
- 컴퓨터비전
- 빅데이터
- 데이터베이스
- I'm Sorry
- 네트워크보안
- 딥러닝
- 웹개발
- 데이터분석
- 2
- 소프트웨어공학
- 데이터구조
- 컴퓨터과학
- 네트워크
- 클라우드컴퓨팅
- 프로그래밍언어
- 프로그래밍
- 자료구조
- 인공지능
- Today
- Total
스택큐힙리스트
자바스크립트에서 문자열의 모든 발생을 치환하는 방법은 무엇인가요? 본문
주어진 문자열:
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() 메서드와 정규식을 사용하여 자바스크립트에서 문자열의 모든 발생을 바꿀 수 있습니다.