A rotina é bastante simples. O exemplo a seguir procura as palavras "carro" e "rádio" em uma tabela que possui um campo denominado "DESCRICAO".
Em primeiro lugar, vamos tratar os dados recebidos do formulário:
'Codifica os dados recebidos formatando os caracteres especiais, neste caso,
'o espaço é substituído pelo sinal (+)
strProcura = Server.URLEncode(request("campo_do_formulario_postado"))
'Como nossa pesquisa será por "múltiplas palavras" (aqui você pode alterar ao seu gosto)
'é necessário trocar o sinal de (+) pelo (%) que é usado com o LIKE na string SQL
strProcura = replace(strProcura,"+","%")
Teremos com resultado: carro%radio
Agora com a string de procura tratada, vamos criar o ARRAY que conterá as palavras para "comparação" com as encontradas.
Veja que neste ponto não utilizaremos os sinais de (%), pois vamos procurar a palavra INTEIRA dentro do resultado vindo do Banco de Dados:
'Atribui o valor postado à variável string_procurada
string_procurada = request("campo_do_formulario_postado")
'Aqui colocamos "cada" palavra em uma posição do vetor. Veja que a função Split tem como parâmetros
'Split(string,separdor), onde o separador é o "espaço": "carro radio". Neste caso o VetorResultado conterá
' duas palavras: carro e radio
VetorResultado = Split(string_procurada," ")
Agora já está tudo pronto. Então vamos atribuir à variável "campo" o resultado do Recordset:
campo = rstTemp.Fields.Item("DESCRICAO").Value
A seguir, temos o laço For..Next que substitui o(s) valore(s) procurado(s) pelo(s) encontrado(s).
Esse laço é o responsável pelas substituições. Nele é usada a função replace que tem como parâmetros:
Replace(string_completa,palavra_procurada,palavra_substituida)
For I = 0 to Ubound(VetorResultado)
campo = REPLACE(campo, VetorResultado(I),"<b>" & ucase(VetorResultado(I)) & "</b>",1,1,1)
Next
Obs: 1,1,1 no Replace é para que a palavra substituída independente da formatação, pois o Replace é "Case Sensitive".
Para mais informações, veja o detalhamento da função Replace no site da Microsoft®.
Veja que o laço é necessário para efetuar a procura de "cada" palavra contida no ARRAY. Para isso usamos a função Ubound(parametro) que conta a quantidade de elementos contido no ARRAY ou VETOR.
O funcionamento é simples, para cada passagem, a variável I é incrementada e a posição do ARRAY é lida.
Note que o importante é atribuir a variável "campo" ao Replace para que possa ser feita a atribuição; vamos dizer "recursiva".
Espero que esta pequena contribuição possa tirar a dúvida sobre as funções Replace() e Split(), e que o código acima possa ser útil em seus sistemas.
Um abraço.
Edson Melo de Souza
[email protected]
Fonte: www.linhadecodigo.com.br