Comment remplacer toutes les occurrences d'un string en JavaScript ?

Le langage JavaScript ne fournit pas de fonctions ou de méthode pour remplacer toutes les occurrences d'une chaîne de caractères. En effet, la seule méthode de remplacement est la méthode replace() et elle ne remplace que la première occurrence. Pour créer sa propre méthode de remplacement, on peut soit utiliser les expressions régulières, soit utiliser d'autres méthodes liées aux chaînes de caractères.

En utilisant une expression régulière, il est possible de remplacer toutes les occurrences d'une chaîne de caractères. Il suffit pour cela d'instancier l'expression régulière avec la chaîne de caractères et d'utiliser comme drapeau l'option g, qui indique de rechercher l'expression dans toutes les lignes de la chaîne de caractères. La méthode replace() remplacera alors toutes les occurrences de la chaîne de caractères. Il faut cependant faire attention aux caractères spéciaux des expressions régulières. Pour éviter qu'ils soient interprétés, une autre expression régulière est nécessaire pour échapper ces caractères.

function replaceAll(recherche, remplacement, chaineAModifier)
{
//On échappe les éventuels caractères spéciaux de la chaîne
var chaine = chaineAModifier.replace(/[.*+?^${}()|[]\]/g, \$&);
//On effectue le remplacement dans la chaîne
var re = new RegExp(recherche, 'g');
return chaine.replace(re, remplacement);
}</pre>

Une deuxième méthode consiste à utiliser deux méthodes liées aux chaînes de caractères : la méthode split() qui sépare une chaîne selon un délimiteur et la méthode join(), qui effectue l'opération inverse. Il suffit alors de séparer la chaîne à modifier selon la chaîne que l'on recherche et de réunir les éléments avec la chaîne de remplacement comme délimiteur.
<pre>function replaceAll(recherche, remplacement, chaineAModifier)
{
return chaineAModifier.split(recherche).join(remplacement);
}</pre>

JavaScript