La syntaxe de la méthode de remplacement est la suivante : stringObj.replace(rgExp, replaceText) où stringObj est une chaîne (string), reExp peut être un objet d'expression régulière (RegExp) ou une chaîne (string), et replaceText est un remplacement du trouvé chaîne. . . Afin d’aider tout le monde à mieux comprendre, donnons ci-dessous un exemple simple.
Code Js
Copiez le code comme suit :
<langage de script="javascript">
var stringObj="République populaire de Zhonggu, peuple de Zhonggu";
//Remplacez la faute de frappe "Zhonggu" par "Chine"
//Et renvoie le nouveau caractère remplacé
//La valeur de la chaîne d'origine stringObj n'a pas changé
var newstr=stringObj.replace("Zhonggu","Chine");
alerte (nouvelle chaîne);
</script>
"Zhonggu" signifie "Chine"
La valeur de
Chine");
Si vous êtes plus intelligent que moi, après avoir lu l'exemple ci-dessus, vous constaterez que la deuxième faute de frappe "Zhonggu" n'a pas été remplacée par "Chine". Nous pouvons exécuter la méthode de remplacement secondaire pour remplacer la deuxième faute de frappe "Zhonggu". a été amélioré comme suit :
Code Js
Copiez le code comme suit :
<langage de script="javascript">
var stringObj="République populaire de Zhonggu, peuple de Zhonggu";
//Remplacez la faute de frappe "Zhonggu" par "Chine"
//Et renvoie le nouveau caractère remplacé
//La valeur de la chaîne d'origine stringObj n'a pas changé
var newstr=stringObj.replace("Zhonggu","Chine");
newstr=newstr.replace("Zhonggu","Chine");
alerte (nouvelle chaîne);
</script>
"Zhonggu" signifie "Chine"
La valeur de
Chine");
Chine");
Nous pouvons y réfléchir attentivement. S'il y a des fautes de frappe N à la puissance N, devrions-nous également exécuter la méthode de remplacement N à la puissance N pour remplacer les fautes de frappe ? ? Oh, n'ayez pas peur. Avec l'expression régulière, vous n'avez pas besoin d'exécuter la méthode replace une seule fois en cas de faute de frappe. . Le code une fois le programme amélioré est le suivant
Code Js
Copiez le code comme suit :
<langage de script="javascript">
var reg=new RegExp("久古","g"); //Créer un objet RegExp normal
var stringObj="République populaire de Zhonggu, peuple de Zhonggu";
var newstr=stringObj.replace(reg,"Chine");
alerte (nouvelle chaîne);
</script>
Créer un objet RegExp régulier
Ce qui précède est l’application la plus simple de la méthode de remplacement. Je me demande si vous la comprenez ? ? Commençons par une application légèrement plus complexe. .
Lorsque vous recherchez des articles sur certains sites Web, vous constaterez ce phénomène, c'est-à-dire que les mots-clés de recherche seront mis en surbrillance et changés de couleur ? ? Comment y parvient-on ? ? En fait, on peut utiliser des expressions régulières pour y parvenir. Veuillez consulter le code ci-dessous pour le principe simple
Code Js
Copiez le code comme suit :
<langage de script="javascript">
var str="République populaire de Chine, République populaire de Chine";
var newstr=str.replace(/(人)/g,"<font color=red>$1</font>");
document.write(newstr);
</script>
Le programme ci-dessus manque d'interactivité. Améliorons le programme afin que vous puissiez saisir indépendamment les caractères que vous souhaitez rechercher.
Code Js
Copiez le code comme suit :
<langage de script="javascript">
var s=prompt("Veuillez saisir les caractères que vous recherchez", "personne");
var reg=new RegExp("("+s+")","g");
var str="République populaire de Chine, République populaire de Chine";
var newstr=str.replace(reg,"<font color=red>$1</font>");
document.write(newstr);
</script>
personnes");
Peut-être que tout le monde ne comprend pas très bien ce que signifie le caractère spécial $1. En fait, $1 représente les caractères entre parenthèses dans l'expression de gauche, c'est-à-dire la première sous-correspondance. De la même manière, $2 représente la deuxième sous-correspondance. . Qu'est-ce qu'une sous-correspondance ? ? En termes simples, chaque parenthèse à gauche est la première correspondance de mots et la deuxième parenthèse est la deuxième sous-correspondance. .
Quand on veut effectuer des opérations sur les caractères trouvés, comment l'implémenter ? ? Avant de l'implémenter, parlons d'abord de la façon d'obtenir les paramètres d'une certaine fonction. . À l'intérieur de la fonction, il y a une collection d'arguments. Cette collection stocke tous les paramètres de la fonction actuelle. Tous les paramètres de la fonction peuvent être obtenus via des arguments. Pour votre compréhension, veuillez consulter le code suivant.
Code Js
Copiez le code comme suit :
<langage de script="javascript">
fonction test(){
alert("Nombre de paramètres :"+arguments.length);
alert("La valeur de chaque paramètre : "+arguments[0]);
alert("La valeur du deuxième paramètre"+arguments[1]);
//Vous pouvez utiliser une boucle for pour lire tous les paramètres
}
test("aa", "bb", "cc");
</script>
alerte("
alerte("
alerte("
//Boucle pour lire tous les paramètres
Après avoir compris le programme ci-dessus, regardons le programme intéressant suivant
Code Js
Copiez le code comme suit :
<langage de script="javascript">
var reg=new RegExp("//d","g");
var str="abd1afa4sdf";
str.replace(reg,function(){alert(arguments.length);});
</script>
Nous avons été surpris de constater que la fonction anonyme a été exécutée deux fois et qu'il y avait trois paramètres dans la fonction. Pourquoi a-t-elle été exécutée deux fois ? ? C'est facile à imaginer, car l'expression régulière que nous avons écrite correspond à un seul nombre et la chaîne détectée contient deux nombres, donc la fonction anonyme est exécutée deux fois. . Quels sont les trois paramètres à l’intérieur de la fonction anonyme ? ? Pour clarifier ce problème, regardons le code suivant.
Code Js
Copiez le code comme suit :
<langage de script="javascript">
fonction test(){
pour(var i=0;i<arguments.length;i++){
alert("La valeur du "+(i+1)+"ème paramètre : "+arguments[i]);
}
}
var reg=new RegExp("//d","g");
var str="abd1afa4sdf";
str.replace(reg,test);
</script>
pour(var i=0;i<arguments.length;i++){
alert("Valeurs des paramètres : "+arguments[i]);
}
Après observation, nous avons constaté que le premier paramètre représente le caractère correspondant, le deuxième paramètre représente la position d'index minimale du caractère lors de la correspondance (RegExp.index) et le troisième paramètre représente la chaîne correspondante (RegExp.input). En fait, le nombre de ces paramètres augmentera à mesure que le nombre de sous-correspondances augmentera. Après avoir clarifié ces questions, nous pouvons utiliser une autre façon d'écrire
Code Js
Copiez le code comme suit :
<langage de script="javascript">
test de fonction ($1){
renvoie "<font color='red'>"+$1+"</font>"
}
var s=prompt("Veuillez saisir les caractères que vous recherchez", "personne");
var reg=new RegExp("("+s+")","g");
var str="République populaire de Chine, République populaire de Chine";
var newstr=str.replace(reg,test);
document.write(newstr);
</script>
renvoie "<font color='red'>"+$1+"</font>"
personnes");
Après avoir lu le programme ci-dessus, il s'avère que vous pouvez faire ce que vous voulez avec les caractères correspondants. Voici un exemple d'application simple :
Code Js
Copiez le code comme suit :
<langage de script="javascript">
var str="Il a 22 ans, elle a 20 ans, son père a 45 ans et son père a 44 ans, il y a 4 personnes au total"
test de fonction ($1){
var gyear=(new Date()).getYear()-parseInt($1)+1;
return $1+"("+gyear+"année de naissance)";
}
var reg=new RegExp("(//d+)ans",g");
var newstr=str.replace(reg,test);
alerte(str);
alerte (nouvelle chaîne);
</script>