la méthode replace de l'objet String dans JavaScript possède plusieurs variantes .Celle la plus utilisée est pour remplacer une occurrence d'un mot d'un caractère dans une chaîne a savoir :
soit la chaîne de caractère suivante ;
var myString="Bonjour Jacques ..! Bonjour Marie ! Salut tout le monde ..!";
si on veut remplacer le mot "Salut" par "Bonjour" , on pourra écrire ;
var newString=myString.replace("Salut","Bonjour");
ce qui assigne a la variable newString la chaine :
"Bonjour Jacques..! Bonjour Marie ! Bonjour tout le monde ..!";
Maintenant si on veut remplacer toutes les occurrences du mot "Bonjour" par "Salut" faudra alors utiliser la la méthode replace avec le premier paramètre comme une expression régulière voir:
var newString=myString.replace(/Bonjour/gm ,"Salut");
certains navigateurs ne supporte pas le fait d écrire les expression régulière entre barres obliques dans ce cas vaut mieux écrire ce code comme suit :
var myRegEx=new RegExp("Bonjour","gm");
var newString=myString.replace(myRegEx ,"Salut");
Résultat newString aura alors comme valeur :
"Salut Jacques..! Salut Marie ! Salut tout le monde ..!";
Cette fois on veut remplacer la deuxième occurrence seulement du mot "Bonjour"
par "Salut" ?
Pour ce, on utilisera les expressions régulières avec les capture de mot comme suit :
var myRegEx=new RegExp("^(.*)Bonjour(.*)$","gm");
On capture tout ce qui se trouve avant et après le mot "Bonjour" évidement dans ce cas particulier le premier" Bonjour" n'est précédé de rien
var newString=myString.replace(myRegEx ,"$1Salut$2");
reste qu'a remplacer le "Bonjour" par "Salut" en ce servant des variable $1 et $2 qui représentent respectivement la première et la deuxième capture
Résultat newString aura alors comme valeur :
"Bonjour Jacques..! Salut Marie ! Salut tout le monde ..!";
Cette fois on cherche a déplacer la séquence "Salut tout le monde" au début de la phrase
De la même manière on utilisera les expressions régulières et les captures
var myRegEx=new RegExp("^(.*)(Salut.*)$","gm");
var newString=myString.replace(myRegEx ,"$2 $1");
une autre alternative :
var newString=myString.replace(myRegEx ,
function(match,c1,c2){
return [c2,c1].join(" ");
});
Résultat newString aura alors comme valeur :
"Salut tout le monde ..! Bonjour Jacques..! Salut Marie ! ";
Inscription à :
Publier les commentaires (Atom)
Merci pour l'astuce! Par contre la taille de la police est trop petite dans certaines partie de l'article.
RépondreSupprimer