Сегодня я столкнулся с проблемой: как выделить ключевые слова без учета регистра на веб-странице. Например: текст abcaBcabCaBCabcaBCa, ключевое слово bc, в случае нечувствительности к регистру всего 6 совпадений.
Тогда на веб-странице отображается abcaBcabCaBCabcaBCa.
Многие люди думают о функции замены. Прототип
Заменить(строка,найти,заменить на[,начало[,счет[,сравнить]]])
обязательная строка, строковое выражение, содержащее заменяемую подстроку
найти нужную опцию, искомую подстроку
Требуется replacewith, подстрока, используемая для замены
start необязательно, позиция начала поиска подстрок, значение по умолчанию — 1
count необязательно, количество выполняемых замен подстроки, значение по умолчанию - -1, что указывает на все возможные замены.
сравнение необязательно, режим сравнения, 0: бинарное сравнение 1: текстовое сравнение;
Хотя последний параметр может решить проблему нечувствительности к регистру, что следует заменить?
Потому что в примере были найдены все символы bc, Bc, bC и BC, но их нельзя единообразно заменить одним текстом.
Итак, используйте функцию Instr, чтобы помочь нам.
Выполняйте поиск в исходной строке слева направо при каждом обнаружении совпадения. Просто выполните три шага
1. Выведите строку слева от соответствующего элемента.
2. Примените соответствующий элемент к стилю <span> и выведите его.
3. Повторите предыдущие два шага и продолжайте поиск строки справа до конца поиска.
Код выглядит следующим образом:
Скопируйте код кода следующим образом:
публичная функция HighLight(S,F)
дим tL,tM,tR,k
тЛ=
тМ=
tR=S
k=инстр(1,tR,F,1)
делать, пока k>0
tL=tL и влево(tR,k-1)
tM=mid(tR,k,len(F))
tL=tL & <span style='color:red'> & tM & </span>
tR=вправо(tR,Len(tR)-len(F)-k+1)
k=инстр(1,tR,F,1)
петля
HighLight=tL и tR
конечная функция
При вызове код следующий:
Скопируйте код кода следующим образом:
tS=abcaBcabCaBCabcaBCa
tF=BC
ответ.Запись(ТС)
ответ.Запись(<br/>)
ответ.Запись(HighLight(tS,tF))
Таким образом, пример в начале выглядит так
С другой стороны, задумались, не удобнее ли использовать регулярные выражения? Пробовал несколько раз - безрезультатно. Давайте посмотрим, какой эксперт использует обычные правила для решения этой задачи.
После написания статьи пользователь сети Yugong дал решение регулярному выражению. Проверено и признано правильным. Теперь его код вставлен ниже. Спасибо ему большое.
код
Скопируйте код кода следующим образом:
Функция HighLight(S,F)
Тусклое регулярное выражение
Установить регулярное выражение = Новое регулярное выражение
regEx.IgnoreCase = Истина
regEx.Global = Истина
regEx.Pattern = ( & F & )
HighLight = regEx.Replace(S,<span style='color:red'>$1</span>)
Конечная функция
Response.write HighLight(abcaBcabCaBCabcaBCa,bc)