2012-04-13 13 views
27

Come posso utilizzare una variabile per rimuovere tutte le istanze di una sottostringa da una stringa? (per rimuovere, sto pensando il modo migliore è quello di sostituire, senza nulla, a livello globale ... giusto?)myString.replace (VARIABLE, "") ...... ma globalmente

se ho queste 2 stringhe,

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

poi qualcosa di simile

myString.replace(oldWord, ""); 

sostituisce solo la prima istanza della variabile nella stringa.

ma se aggiungo il g globale come questo myString.replace(/oldWord/g, ""); non funziona, perché pensa che oldWord, in questo caso, sia la sottostringa, non una variabile. Come posso fare questo con la variabile?

+1

possibile duplicato di [Come si passa una variabile a una Regular Expression JavaScript?] (http://stackoverflow.com/ questions/494035/how-do-pass-a-a-a-a-regular-expression-javascript) – fxp

risposta

50

Beh, è ​​possibile utilizzare questo:

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

o semplicemente:

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

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

8

si deve utilizzare il costruttore piuttosto che la sintassi letterale quando si passa variabili. Attenersi alla sintassi letterale per le stringhe letterali per evitare di confondere la sintassi di escape.

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

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

Woot! Quella copia da me? –

+8

Scrivo solo più lentamente e offro più consigli. –

+0

Ok, controlla. –

-1

Secondo la documentazione a MDN, si può fare questo:

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. 

dove/gi dice di fare una sostituzione globale, ignorando caso.

+0

Questo non risponde alla domanda. –

0

Non c'è bisogno di usare un'espressione regolare qui: dividere la stringa intorno partite della stringa che si desidera rimuovere, quindi unire le restanti parti insieme:

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

Nell'esempio del PO:

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

Problemi correlati