2012-04-13 9 views
27

¿Cómo puedo usar una variable para eliminar todas las instancias de una subcadena de una cadena? (para eliminar, estoy pensando en la mejor manera es reemplazar, sin nada, a nivel mundial ... ¿verdad?)myString.replace (VARIABLE, "") ...... pero globalmente

si tengo estos 2 cuerdas,

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

entonces algo como esto

myString.replace(oldWord, ""); 

solo reemplaza la primera instancia de la variable en la cadena.

pero si agrego el g global como este myString.replace(/oldWord/g, ""); no funciona, porque cree que oldWord, en este caso, es la subcadena, no una variable. ¿Cómo puedo hacer esto con la variable?

+1

posible duplicado de [¿Cómo se pasa una variable a una expresión regular JavaScript?] (http://stackoverflow.com/ preguntas/494035/how-do-you-pass-a-variable-to-a-regular-expression-javascript) – fxp

Respuesta

50

Bueno, puede utilizar esto:

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

o simplemente:

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

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

8

usted tiene que utilizar el constructor en lugar de la sintaxis literal al pasar variables. Quédese con la sintaxis literal para cadenas literales para evitar confundir la sintaxis de escape.

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

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

¡Woot! ¿Eso está copiando de mí? –

+8

Simplemente escribo más despacio y ofrezco más consejos. –

+0

Bien, solo revisando. –

-1

De acuerdo con los documentos en MDN, se puede hacer esto:

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. 

donde/gi le indica que debe hacer reemplazar un mundial, ignorando mayúsculas y minúsculas.

+0

Esto no responde la pregunta. –

0

No hay necesidad de utilizar una expresión regular aquí: dividir la cadena en torno a los partidos de la subcadena que desea eliminar, y luego unirse a las partes restantes juntos:

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

En el ejemplo de la OP:

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

Cuestiones relacionadas