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?
Eh bien, vous pouvez utiliser ceci:
var reg = new RegExp(oldWord, "g");
myString.replace(reg, "");
ou simplement:
myString.replace(new RegExp(oldWord, "g"), "");
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,"");
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(''));