Heute bin ich auf ein Problem gestoßen: So markieren Sie Schlüsselwörter auf einer Webseite, bei denen die Groß-/Kleinschreibung nicht beachtet wird. Beispiel: Text abcaBcabCaBCabcaBCa, Schlüsselwort bc. Wenn die Groß-/Kleinschreibung nicht beachtet wird, gibt es insgesamt 6 Übereinstimmungen.
Dann wird auf der Webseite abcaBcabCaBCabcaBCa angezeigt.
Viele Leute denken an die Ersetzungsfunktion. Der Prototyp ist
Ersetzen(string,find,replacewith[,start[,count[,compare]]])
Zeichenfolge erforderlich, Zeichenfolgenausdruck, der die zu ersetzende Teilzeichenfolge enthält
Finden Sie die erforderliche Option, die gesuchte Teilzeichenfolge
Erforderlich ist „replacewith“, die Teilzeichenfolge, die zum Ersetzen verwendet wird
start optional, die Position, an der nach Teilzeichenfolgen gesucht werden soll, der Standardwert ist 1
count optional, die Anzahl der durchzuführenden Teilzeichenfolgenersetzungen. Der Standardwert ist -1 und gibt alle möglichen Ersetzungen an
vergleichen optional, Vergleichsmodus, 0: binärer Vergleich 1: Textvergleich
Obwohl der letzte Parameter das Problem der Groß-/Kleinschreibung lösen kann, was sollte ersetzt werden?
Denn aus dem Beispiel wurde nach bc, Bc, bC und BC gesucht, sie können jedoch nicht einheitlich durch einen Text ersetzt werden.
Nutzen Sie also die Instr-Funktion, um uns zu helfen.
Suchen Sie jedes Mal, wenn eine Übereinstimmung gefunden wird, von links nach rechts in der Quellzeichenfolge. Befolgen Sie einfach die drei Schritte
1. Geben Sie die Zeichenfolge links vom passenden Element aus
2. Wenden Sie das passende Element auf den Stil <span> an und geben Sie es aus
3. Wiederholen Sie die beiden vorherigen Schritte und suchen Sie weiter nach der Zeichenfolge auf der rechten Seite, bis die Suche abgeschlossen ist
Der Code lautet wie folgt:
Kopieren Sie den Codecode wie folgt:
öffentliche Funktion HighLight(S,F)
dim tL,tM,tR,k
tL=
tM=
tR=S
k=instr(1,tR,F,1)
tun, während k>0
tL=tL & links(tR,k-1)
tM=mid(tR,k,len(F))
tL=tL & <span style='color:red'> & tM & </span>
tR=rechts(tR,Len(tR)-len(F)-k+1)
k=instr(1,tR,F,1)
Schleife
HighLight=tL & tR
Endfunktion
Beim Aufruf lautet der Code wie folgt:
Kopieren Sie den Codecode wie folgt:
tS=abcaBcabCaBCabcaBCa
tF=vc
Antwort.Write(tS)
Antwort.Write(<br/>)
Antwort.Write(HighLight(tS,tF))
So sieht das Beispiel am Anfang aus
Denken Sie andererseits darüber nach, ob es bequemer ist, reguläre Ausdrücke zu verwenden? Mehrmals versucht, ohne Ergebnis. Mal sehen, welcher Experte reguläre Regeln verwendet, um dieses Problem zu lösen.
Nachdem er den Artikel geschrieben hatte, gab der Internetnutzer Yugong eine Lösung für den regulären Ausdruck. Getestet und für richtig befunden. Jetzt wird sein Code unten eingefügt. Vielen Dank an ihn.
Code
Kopieren Sie den Codecode wie folgt:
Funktion HighLight(S,F)
RegEx dimmen
Setze regEx = New RegExp
regEx.IgnoreCase = True
regEx.Global = True
regEx.Pattern = ( & F & )
HighLight = regEx.Replace(S,<span style='color:red'>$1</span>)
Funktion beenden
Response.write HighLight(abcaBcabCaBCabcaBCa,bc)