Aujourd'hui, j'ai rencontré un problème : comment mettre en évidence des mots-clés insensibles à la casse dans une page web. Par exemple : texte abcaBcabCaBCabcaBCa, mot-clé bc, en cas d'insensibilité à la casse, il y a un total de 6 correspondances.
Ensuite, ce qui est affiché sur la page Web est abcaBcabCaBCabcaBCa.
Beaucoup de gens pensent à la fonction de remplacement. Le prototype est
Remplacer(chaîne,trouver,replacewith[,start[,count[,compare]]])
chaîne obligatoire, expression de chaîne, contenant la sous-chaîne à remplacer
trouver l'option requise, la sous-chaîne recherchée
replacewith est requis, la sous-chaîne utilisée pour le remplacement
start facultatif, la position pour commencer la recherche de sous-chaînes, la valeur par défaut est 1
count facultatif, le nombre de remplacements de sous-chaînes à effectuer, la valeur par défaut est -1, indiquant tous les remplacements possibles
comparer facultatif, mode comparaison, 0 : comparaison binaire ; 1 : comparaison de texte ;
Bien que le dernier paramètre puisse résoudre le problème d’insensibilité à la casse, que faut-il remplacer ?
Parce que dans l'exemple, bc, Bc, bC et BC ont tous été recherchés, mais ils ne peuvent pas être remplacés uniformément par un seul texte.
Alors, utilisez la fonction Instr pour nous aider.
Recherchez à partir de la chaîne source, de gauche à droite, chaque fois qu'une correspondance est trouvée. Suivez simplement les trois étapes
1. Affichez la chaîne à gauche de l'élément correspondant
2. Appliquez l'élément correspondant au style <span> et affichez-le
3. Répétez les deux étapes précédentes et continuez à rechercher la chaîne de droite jusqu'à la fin de la recherche
Le code est le suivant :
Copiez le code comme suit :
fonction publique Highlight(S,F)
faible tL,tM,tR,k
tL=
tM=
tR=S
k=instr(1,tR,F,1)
faire pendant que k>0
tL=tL & gauche(tR,k-1)
tM=milieu(tR,k,len(F))
tL=tL & <span style='color:red'> & tM & </span>
tR=droite(tR,Len(tR)-len(F)-k+1)
k=instr(1,tR,F,1)
boucle
Highlight=tL & tR
fonction de fin
Lors de l'appel, le code est le suivant :
Copiez le code comme suit :
tS=abcaBcabCaBCabcaBCa
tF=bc
réponse.Write(tS)
réponse.Write(<br/>)
réponse.Write(HighLight(tS,tF))
De cette façon, l'exemple du début ressemble à
D'un autre côté, vous vous demandez s'il est plus pratique d'utiliser des expressions régulières ? Essayé plusieurs fois sans résultat. Voyons quel expert utilise des règles régulières pour résoudre ce problème.
Après avoir écrit l'article, l'internaute Yugong a donné une solution à l'expression régulière. Testé et trouvé correct. Maintenant, son code est collé ci-dessous. Merci beaucoup à lui.
code
Copiez le code comme suit :
Fonction Highlight (S, F)
Dim regEx
Définir regEx = Nouvelle RegExp
regEx.IgnoreCase = Vrai
regEx.Global = Vrai
regEx.Pattern = ( & F & )
HighLight = regEx.Replace(S,<span style='color:red'>$1</span>)
Fonction de fin
Réponse.write HighLight(abcaBcabCaBCabcaBCa,bc)