Hari ini, saya menemui masalah: bagaimana menyorot kata kunci yang peka huruf besar-kecil di halaman web. Misalnya: teks abcaBcabCaBCabcaBCa, kata kunci bc, jika tidak peka huruf besar-kecil, ada total 6 kecocokan.
Maka yang ditampilkan pada halaman web tersebut adalah abcaBcabCaBCabcaBCa.
Banyak orang memikirkan fungsi replace. Prototipenya adalah
Ganti(string,temukan, gantidengan[,mulai[,hitung[,bandingkan]]])
string diperlukan, ekspresi string, berisi substring yang akan diganti
temukan opsi yang diperlukan, substring sedang dicari
replacewith diperlukan, substring yang digunakan untuk penggantian
mulai opsional, posisi untuk mulai mencari substring, defaultnya adalah 1
count opsional, jumlah penggantian substring yang harus dilakukan, defaultnya adalah -1, menunjukkan semua kemungkinan penggantian
bandingkan opsional, mode perbandingan, 0: perbandingan biner; 1: perbandingan teks
Meskipun parameter terakhir dapat mengatasi masalah ketidakpekaan huruf besar/kecil, apa yang harus diganti?
Karena dari contoh bc, Bc, bC, dan BC semuanya sudah dicari, namun tidak bisa tergantikan secara seragam dalam satu teks.
Jadi, gunakan fungsi Instr untuk membantu kami.
Telusuri dari string sumber, kiri ke kanan, setiap kali ditemukan kecocokan. Ikuti saja tiga langkah tersebut
1. Keluarkan string di sebelah kiri item yang cocok
2. Terapkan item yang cocok ke gaya <span> dan keluarkan
3. Ulangi dua langkah sebelumnya dan lanjutkan pencarian string di sebelah kanan hingga pencarian selesai
Kodenya adalah sebagai berikut:
Copy kode kodenya sebagai berikut:
fungsi publik Sorotan(S,F)
redupkan tL,tM,tR,k
tL=
tM=
tR=S
k=instr(1,tR,F,1)
lakukan saat k>0
tL=tL & kiri(tR,k-1)
tM=pertengahan(tR,k,len(F))
tL=tL & <span style='color:red'> & tM & </span>
tR=kanan(tR,Len(tR)-len(F)-k+1)
k=instr(1,tR,F,1)
lingkaran
Sorotan=tL & tR
fungsi akhir
Saat menelepon, kodenya adalah sebagai berikut:
Copy kode kodenya sebagai berikut:
tS=abcaBcabCaBCabcaBCa
tF=bc
respon.Tulis(tS)
respon.Tulis(<br/>)
respon.Tulis(HighLight(tS,tF))
Seperti inilah contoh di awal
Di sisi lain, memikirkan apakah lebih nyaman menggunakan ekspresi reguler? Mencoba beberapa kali tanpa hasil. Mari kita lihat pakar mana yang menggunakan aturan reguler untuk menyelesaikan masalah ini.
Usai menulis artikel tersebut, netizen Yugong memberikan solusi ekspresi reguler. Diuji dan ternyata benar. Sekarang kodenya ditempel di bawah. Terima kasih banyak padanya.
kode
Copy kode kodenya sebagai berikut:
Fungsi Sorotan(S,F)
RegEx redup
Setel regEx = RegExp Baru
regEx.IgnoreCase = Benar
regEx.Global = Benar
regEx.Pola = ( & F & )
HighLight = regEx.Replace(S,<span style='color:red'>$1</span>)
Fungsi Akhir
Respons.tulis HighLight(abcaBcabCaBCabcaBCa,bc)