Ver Mensaje Individual
  #16 (permalink)  
Antiguo 20/10/2004, 14:18
Avatar de AlZuwaga
AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 8 meses
Puntos: 535
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
__________________
...___...