Hoje, encontrei um problema: como destacar palavras-chave que não diferenciam maiúsculas de minúsculas em uma página da web. Por exemplo: texto abcaBcabCaBCabcaBCa, palavra-chave bc, no caso de não diferenciar maiúsculas de minúsculas, há um total de 6 correspondências.
Então o que é exibido na página da web é abcaBcabCaBCabcaBCa.
Muitas pessoas pensam na função de substituição. O protótipo é
Substituir(string,encontrar,substituir por[,iniciar[,contar[,comparar]]])
string obrigatória, expressão de string, contendo a substring a ser substituída
encontre a opção necessária, a substring que está sendo pesquisada
replacewith é obrigatório, a substring usada para substituição
start opcional, a posição para iniciar a pesquisa de substrings, o padrão é 1
contagem opcional, o número de substituições de substring a serem executadas, o padrão é -1, indicando todas as substituições possíveis
compare opcional, modo de comparação, 0: comparação binária 1: comparação de texto;
Embora o último parâmetro possa resolver o problema de insensibilidade a maiúsculas e minúsculas, o que deve ser substituído?
Porque a partir do exemplo, bc, Bc, bC e BC foram todos pesquisados, mas não podem ser substituídos uniformemente por um texto.
Então, use a função Instr para nos ajudar.
Pesquise na string de origem, da esquerda para a direita, sempre que uma correspondência for encontrada. Basta seguir os três passos
1. Produza a string à esquerda do item correspondente
2. Aplique o item correspondente ao estilo <span> e produza-o
3. Repita as duas etapas anteriores e continue procurando a string à direita até o final da pesquisa
O código é o seguinte:
Copie o código do código da seguinte forma:
função pública Destaque(S,F)
dim tL,tM,tR,k
tL=
tM =
tR=S
k=instr(1,tR,F,1)
faça enquanto k>0
tL=tL & esquerda(tR,k-1)
tM=meio(tR,k,len(F))
tL=tL & <span style='color:red'> & tM & </span>
tR=direita(tR,Len(tR)-len(F)-k+1)
k=instr(1,tR,F,1)
laço
Destaque=tL & tR
função final
Ao ligar, o código é o seguinte:
Copie o código do código da seguinte forma:
tS=abcaBcabCaBCabcaBCa
tF=bc
resposta.Write(tS)
resposta.Write(<br/>)
resposta.Write(Destaque(tS,tF))
Desta forma, o exemplo no início parece
Por outro lado, pensando se é mais conveniente usar expressões regulares? Tentei várias vezes sem resultado. Vamos ver qual especialista usa regras regulares para resolver este problema.
Depois de escrever o artigo, o internauta Yugong deu uma solução para a expressão regular. Testado e considerado correto. Agora o código dele está colado abaixo. Muito obrigado a ele.
código
Copie o código do código da seguinte forma:
Função Destaque(S,F)
Escurecer regEx
Definir regEx = Novo RegExp
regEx.IgnoreCase = Verdadeiro
regEx.Global = Verdadeiro
regEx.Pattern = ( & F & )
Destaque = regEx.Replace(S,<span style='color:red'>$1</span>)
Função final
Response.write Destaque(abcaBcabCaBCabcaBCa,bc)