web-dev-qa-db-fra.com

myString.replace (VARIABLE, "") ...... mais globalement

Comment puis-je utiliser une variable pour supprimer toutes les instances d'une sous-chaîne d'une chaîne? (pour supprimer, je pense que le meilleur moyen est de remplacer, avec rien, globalement ... non?)

si j'ai ces 2 cordes,

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

alors quelque chose comme ça

myString.replace(oldWord, "");

remplace uniquement la première instance de la variable dans la chaîne.

mais si j'ajoute le g global comme ceci myString.replace(/oldWord/g, ""); cela ne fonctionne pas, car il pense que oldWord, dans ce cas, est la sous-chaîne, pas une variable. Comment puis-je faire cela avec la variable?

36
monkey blot

Eh bien, vous pouvez utiliser ceci:

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

ou simplement:

myString.replace(new RegExp(oldWord, "g"), "");
68
Derek 朕會功夫

Vous devez utiliser le constructeur plutôt que la syntaxe littérale lors du passage de variables. Restez fidèle à la syntaxe littérale des chaînes littérales pour éviter de confondre la syntaxe d'échappement.

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

myString.replace(oldWordRegEx,"");
8
Erik Reppen

Pas besoin d'utiliser une expression régulière ici: divisez la chaîne autour des correspondances de la sous-chaîne que vous souhaitez supprimer, puis réunissez les autres parties:

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

Dans l'exemple du PO:

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