2012-04-13 5 views
27

변수를 사용하여 문자열에서 부분 문자열의 모든 인스턴스를 제거하려면 어떻게해야합니까? 는 (내가 바로 ... 세계적으로, 아무것도, 가장 좋은 방법은 교체하는 것입니다 생각하고, 제거하는 방법?)myString.replace (VARIABLE, "") ...... 그러나 글로벌하게

을 나는이 2 개 개의 문자열이있는 경우, 다음

myString = "This sentence is an example sentence." 
oldWord = " sentence" 

뭔가를이

처럼
myString.replace(oldWord, ""); 

은 문자열에서 변수의 첫 번째 인스턴스 만 바꿉니다.

하지만이 경우 myString.replace(/oldWord/g, "");과 같은 글로벌 g를 추가하면 oldWord가이 경우 substring이 아니라 변수라고 생각하기 때문에 작동하지 않습니다. 변수로 어떻게 할 수 있습니까?

+1

가능한 중복 [정규 표현식 자바 스크립트에 변수를 전달하려면 어떻게합니까?] (http://stackoverflow.com/ 질문/494035/how-do-you-you-do-a-regular-expression-javascript) – fxp

답변

50

글쎄, 당신은이를 사용할 수 있습니다 단순히

var reg = new RegExp(oldWord, "g"); 
myString.replace(reg, ""); 

또는 :

myString.replace(new RegExp(oldWord, "g"), ""); 
+1

붐 :'var oldWord = '\\'; " –

8

당신은 변수를 전달할 때 문자 그대로의 구문이 아닌 생성자를 사용해야합니다. 혼동하는 이스케이프 구문을 피하려면 리터럴 문자열의 리터럴 구문을 사용하십시오.

var oldWordRegEx = new RegExp(oldWord,'g'); 

myString.replace(oldWordRegEx,""); 
+0

Woot! 그게 나 한테서 복사하는거야? –

+8

난 그냥 느린 입력하고 더 많은 조언을 제공합니다. –

+0

좋아, 그냥 확인해. –

-1

MDN의 문서에 따르면,이 작업을 수행 할 수 있습니다/GI는 대소 문자를 무시하고, 글로벌 대체 할을 알려줍니다

var re = /apples/gi; 
var str = 'Apples are round, and apples are juicy.'; 
var newstr = str.replace(re, 'oranges'); 
console.log(newstr); // oranges are round, and oranges are juicy. 

.

+0

질문에 대답하지 않습니다. –

0

여기에 정규 표현식을 사용할 필요가 : 방공호의 예에서

myString.split(oldWord).join('') 

:

var myString = "This sentence is an example sentence."; 
 
var oldWord = " sentence"; 
 
console.log(myString.split(oldWord).join(''));
당신이 다음 나머지 함께 부품에 가입 제거 할 문자열에 일치하는 문자열을 분할