142 votes

String.prototype.replaceAll() ne fonctionne pas

J'ai besoin de remplacer toutes les chaînes de caractères dans une variable.

var a = "::::::";
a = a.replace(":", "hi");
console.log(a);

Le code ci-dessus ne remplace que la première chaîne, c'est-à-dire hi:::::: J'ai utilisé replaceAll mais ça ne marche pas.

250voto

Mise à jour : Toutes les versions récentes des principaux navigateurs, ainsi que NodeJS 15+, sont désormais compatibles. replaceAll

Original :

Il n'y a pas replaceAll en JavaScript : la console d'erreur signalait probablement une erreur.

Au lieu de cela, utilisez le /g ("match globally") avec un argument d'expression régulière pour replace :

const a = "::::::";
const replaced = a.replace(/:/g,"hi");
console.log(replaced);

Le est couvert par MDN : String.replace (et ailleurs).

85voto

Mitch Satchwell Points 4625

Il n'y a pas replaceAll en JavaScript.

Vous pouvez utiliser une regex avec un identifiant global comme indiqué dans la réponse de pst :

a.replace(/:/g,"hi");

Une alternative que certains préfèrent car elle élimine le besoin d'utiliser des expressions régulières est d'utiliser la fonction JavaScript split y join fonctionne comme suit :

a.split(":").join("hi");

Il convient de noter que la deuxième approche est toutefois plus lente.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X