Remplacer toutes les occurrences ,JQuery JavaScript replace

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 ! ";












1 commentaires:

  1. Merci pour l'astuce! Par contre la taille de la police est trop petite dans certaines partie de l'article.

    RépondreSupprimer