2012-04-13 6 views
27

Wie kann ich eine Variable verwenden, um alle Instanzen einer Teilzeichenfolge aus einer Zeichenfolge zu entfernen? (zu entfernen, ich denke, der beste Weg, mit nichts zu ersetzen ist, global ... nicht wahr?)myString.replace (VARIABLE, "") ...... aber global

wenn ich diese 2 Strings haben,

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

dann so etwas wie dieses

myString.replace(oldWord, ""); 

ersetzt nur die erste Instanz der Variablen in der Zeichenfolge.

aber wenn ich die globale g wie diese hinzufügen myString.replace(/oldWord/g, ""); funktioniert es nicht, weil es denkt, dass alteWort, in diesem Fall ist der Teilstring, keine Variable. Wie kann ich das mit der Variable machen?

+1

möglich Duplikat von [Wie Sie eine Variable ein regulärer Ausdruck JavaScript passieren kann?] (http://stackoverflow.com/ Fragen/494035/how-do-you-pass-eine-Variable-zu-einem-regulären-Ausdruck-javascript) – fxp

Antwort

50

Nun, können Sie diese verwenden:

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

oder einfach:

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

Boom: 'var altWord = '\\';' –

8

Sie haben den Konstruktor zu verwenden, anstatt die Literalsyntax wenn Variablen übergeben. Bleiben Sie bei der Literalsyntax für literale Strings, um eine verwirrende Escape-Syntax zu vermeiden.

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

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

Woot! Kopiert das von mir? –

+8

Ich tippe nur langsamer und biete mehr Ratschläge. –

+0

Okay, nur überprüfen. –

-1

Nach der Dokumentation bei MDN, können Sie dies tun:

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. 

wo/gi es sich um eine globale ersetzen zu tun erzählt, Fall zu ignorieren.

+0

Dies beantwortet die Frage nicht. –

0

Keine Notwendigkeit, einen regulären Ausdruck zu verwenden, hier: teilen Sie die Schnur um Spiele der Teilzeichenfolge Sie entfernen möchten, dann kommen die übrigen Teile zusammen:

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

In dem Beispiel des OP:

var myString = "This sentence is an example sentence."; 
 
var oldWord = " sentence"; 
 
console.log(myString.split(oldWord).join(''));

Verwandte Themen