JavaScript a une replace()
méthode d'objet String pour remplacer les sous-chaînes. Cette méthode peut avoir deux arguments. Le premier argument peut être une chaîne ou un modèle d'expression régulière (objet regExp) et le second argument peut être une chaîne ou une fonction. Un exemple de replace()
méthode ayant les deux arguments de chaîne est présenté ci-dessous.
var text = 'one, two, three, one, five, one';
var new_text = text.replace('one', 'ten');
console.log(new_text) //ten, two, three, one, five, one
Notez que si le premier argument est la chaîne, seule la première occurrence de la sous-chaîne est remplacée comme dans l'exemple ci-dessus. Pour remplacer toutes les occurrences de la sous-chaîne, vous devez fournir une expression régulière avec un g
indicateur (global). Si vous ne fournissez pas l'indicateur global, seule la première occurrence de la sous-chaîne sera remplacée même si vous fournissez l'expression régulière comme premier argument. Remplaçons donc toutes les occurrences de one
dans l'exemple ci-dessus.
var text = 'one, two, three, one, five, one';
var new_text = text.replace(/one/g, 'ten');
console.log(new_text) //ten, two, three, ten, five, ten
Notez que vous n'entourez pas le modèle d'expression régulière de guillemets, ce qui en fera une chaîne et non un objet regExp. Pour effectuer un remplacement insensible à la casse, vous devez fournir un indicateur supplémentaire i
qui rend le modèle insensible à la casse. Dans ce cas, l'expression régulière ci-dessus sera /one/gi
. Notez le i
drapeau ajouté ici.
Si le deuxième argument a une fonction et s'il y a une correspondance, la fonction est passée avec trois arguments. Les arguments obtenus par la fonction sont la correspondance, la position de la correspondance et le texte d'origine. Vous devez renvoyer par quoi cette correspondance doit être remplacée. Par exemple,
var text = 'one, two, three, one, five, one';
var new_text = text.replace(/one/g, function(match, pos, text){
return 'ten';
});
console.log(new_text) //ten, two, three, ten, five, ten
Vous pouvez avoir plus de contrôle sur le texte de remplacement en utilisant une fonction comme deuxième argument.
str_replace
accepte également deux tableaux de la même longueur, où chaque chaîne du premier tableau est remplacée par la chaîne du deuxième tableau au même index. Veuillez consulter stackoverflow.com/a/5069776/296430 pour la seule fonction correcte que j'ai trouvée jusqu'à présent qui imite ce comportement exact en javascript.