Muestra el criterio buscado en el contexto del texto donde se encuentre.
Cuando buscamos una palabra en, por ejemplo, una base de datos de noticias, lo que solemos hacer es mostrar los, supongamos, 250 primeros caracteres de un campo. Qué pasa si la palabra buscada no aparece dentro de esos 250 caracteres? Pues, obvio: que no se muestra en ese pequeño extracto. Para solventar ese inconveniente, se me ocurrió hacer esto:
Código:
Function MostrarResult(numLongitud, strTxt, strCriterio)
varAparicion1 = InStr(LCase(strTxt), LCase(strCriterio))
If varAparicion1 > numLongitud Then
Mitad = (numLongitud - Len(strCriterio)) \ 2
PrimerMitad = Mid(strTxt, varAparicion1 - Mitad, Mitad)
SegundaMitad = Mid(strTxt, varAparicion1 + Len(strCriterio), Mitad)
Recorte = "...<EM>" & PrimerMitad & "<STRONG>" & strCriterio & "</STRONG>" & SegundaMitad & "</EM>..."
Else
Recorte = Left(strTxt, numLongitud + Len(strCriterio))
Recorte = "<EM>" & Replace(Recorte, strCriterio, "<STRONG>" & strCriterio & "</STRONG>",1,1000,1) & "</EM>..."
End if
MostrarResult = Recorte
End Function
Se la llama así:
Código:
Response.Write MostrarResult(cantidad_caracteres, Fuente_de_datos, el_criterio)
En donde:
-
cantidad_caracteres es la cantidad de caracteres que se mostrará a manera de extracto
-
Fuente_de_datos puede ser el campo de una BD, etc..
-
el_criterio es justamente lo que se está buscando dentro de
Fuente_de_datos
Estaría bueno modificarla para que, además de hacerlo para la primer coincidencia, haga lo mismo para las coincidencias restantes dentro del texto.. pero eso para otra oportunidad