Foros del Web » Programando para Internet » ASP Clásico »

ssutitucion de la palabra exacta

Estas en el tema de ssutitucion de la palabra exacta en el foro de ASP Clásico en Foros del Web. Hola muy buenas a todos, veamos una consulta, tengo un texto como este que sale de una base de datos. Cita: Bajo el nombre de ...
  #1 (permalink)  
Antiguo 31/05/2005, 04:41
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 4 meses
Puntos: 2
ssutitucion de la palabra exacta

Hola muy buenas a todos, veamos una consulta, tengo un texto como este que sale de una base de datos.

Cita:
Bajo el nombre de Neoimpresionismo se engloban múltiples tendencias y estilos que vienen a ser un crisol de diferentes técnicas y objetivos que responden a las inquietudes de los diferentes artistas. A éstos no hay que entenderlos bajo un estilo unificado y definido, sino que la obra de cada uno de ellos responde a la individualidad de sus planteamientos.
y tengo una serie de palabras que me recoge de una consulta a la base de datos, las palabras son tales como:

Pintura metafísica
Dadaísmo
Figuración e informalismo español y europeo´
Paleolítico
Neolítico
Edad de los metales
Arte antiguo y civilizaciones fluviales
Neoimpresionismo
impresionismo musical

Lo que necesito es que esas palabras que recojo de la BD me las ponga como enlace, es decir que si en el texto aparece Neoclasicismo y en la base existe que me lo ponga como enlace.

Para ello e puesto esto

Código:
do while not RSbuscar1.eof
textoconenlaces = replace(texto,palabras,"<a href=renovario2.asp?id="&Valor_Directorio&"&concepto="&valor_concepto&"&id1="&RSbuscar1("GPrincipal")&"&id2="&RSbuscar1("GSecundario")&"&id3="&Valor_vozprincipal&"&id4="&Valor_id4&" target=_blank>"&palabras&"</a>")
						
RSbuscar1.MoveNext 
loop
response.write textoconenlaces

pero lo qeu me hace es cogerme no la palabra o frase exacta sino una aproximación, por lo que en neoclasicismo no me pone la palabra entera sino que me pone neo<a href=>impresionismo</a>

Alguien sabe como puedo poner esto para que solo me ponga la palabra exacta?

Un saludo
__________________
asp, php, .net, adaptandose a las necesidades
  #2 (permalink)  
Antiguo 31/05/2005, 05:40
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
Código:
do while not RSbuscar1.eof
textoconenlaces = replace(texto," "&palabras&" "," <a href=renovario2.asp?id="&Valor_Directorio&"&concepto="&valor_concepto&"&id1="&RSbuscar1("GPrincipal")&"&id2="&RSbuscar1("GSecundario")&"&id3="&Valor_vozprincipal&"&id4="&Valor_id4&" target=_blank>"&palabras&"</a> ") 'para las que estén sueltas
	textoconenlaces = replace(texto," "&palabras&"."," <a href=renovario2.asp?id="&Valor_Directorio&"&concepto="&valor_concepto&"&id1="&RSbuscar1("GPrincipal")&"&id2="&RSbuscar1("GSecundario")&"&id3="&Valor_vozprincipal&"&id4="&Valor_id4&" target=_blank>"&palabras&"</a>.")'para las que vayan seguidas de un punto
textoconenlaces = replace(texto," "&palabras&","," <a href=renovario2.asp?id="&Valor_Directorio&"&concepto="&valor_concepto&"&id1="&RSbuscar1("GPrincipal")&"&id2="&RSbuscar1("GSecundario")&"&id3="&Valor_vozprincipal&"&id4="&Valor_id4&" target=_blank>"&palabras&"</a>,") para las que vayan seguidas de una coma
' podrías buscarte más casos posibles...				
RSbuscar1.MoveNext 
loop
  #3 (permalink)  
Antiguo 31/05/2005, 08:58
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 4 meses
Puntos: 2
Hola trasgukabi, gracias por contestar, ya tengo unas cuantas formas, primero comprueba las palabras, todas en minusculas y las sustituye por enlaces, despues en myusculas, despues la primera letra en mayuscula, etc..., el problema es este, pongo una imagen que me parece que así es mas claro.



En este caso esta comprobando con todas las letras en minuscula, así qeu llega a la palabra impresionismo y la encuentra como neoimpresionismo y solo pone enlace a parte de esa palabra, despues lo busca como neoimpresionismo y no encuentra nada, por lo que lo deja como esta, no se si es algo raro o es que hay que hacerlo de otra forma.

Un saludo
__________________
asp, php, .net, adaptandose a las necesidades
  #4 (permalink)  
Antiguo 31/05/2005, 09:41
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 4 meses
Puntos: 2
Coñe, que creo qeu ya se que pasa, que no estoy concatenando los resusltados qeu me muestra, bueno lo pruebo y comento algo.

Un saludo
__________________
asp, php, .net, adaptandose a las necesidades
  #5 (permalink)  
Antiguo 31/05/2005, 09:49
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 4 meses
Puntos: 2
pues si qu elas tengo concatenadas, na que ahí no esta el problema
__________________
asp, php, .net, adaptandose a las necesidades
  #6 (permalink)  
Antiguo 31/05/2005, 09:56
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 4 meses
Puntos: 2
Bien esto funciona bien con las palabras que estan contenidas en la base de datos, me las reconoce todas, el problema esta cuando exite por ejemplo una palabra qe es postimpresionismo y en la base de datos, esta la palabra impresionismo, en este caso no se porqué, lo que hace es poner el enlace en la palabra impresionismo y el post lo deja sin enlace, lo que no entiendo es que si yo cojo esa palabra impresionismo y me la busca en todo el texto por qe pone enlace en solo una parte cuando debería ser que no pusiera el enlace en ninguna parte dado que esa palabra, "postimpresionismo" no existe en la BD, buf, qeu lio os estoy metiendo, no se si me explico bien.

Un saludo
__________________
asp, php, .net, adaptandose a las necesidades
  #7 (permalink)  
Antiguo 31/05/2005, 10:18
Avatar de dabadubab  
Fecha de Ingreso: febrero-2005
Ubicación: Sant Hiuston
Mensajes: 157
Antigüedad: 19 años, 3 meses
Puntos: 0
yo como mínimo ni me lo leo... con perdón, tb estoy u poco vago.
__________________
Programando conseguiremos dinero... :-D
Pero Bush y sus secuaces seguirán aniquilando gente por dinero :Zzz:
Cómo mínimo no trabajemos para los poderosos :-p
  #8 (permalink)  
Antiguo 31/05/2005, 10:37
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Hola!

El problema es que te hace falta crear un algoritmo mas avanzado para el replace, es decir, el replace se remplaza en el texto que estas generando las CADENAS exactas, es decir

Cadena = Palabra

Replace(cadena, "labra", "<b>labra</b>")

No te busca palabras o frases, te busca una cadena exacta y la remplazar.

Entonces debes crear un algoritmo mas avanazado para ese replaze, ya sea recorrer el archivo palabra por palabra y compararlo con tus criterios de busqueda, o bien, si puedes hacer algo desde la base de datos pues seria mas facil, algo como:

select '[' + tabla.palabra + ']' form tabla where palabra = 'labra'

Entonces se te regresara como [labra], y en tu replace haces:

Replace(cadena, "[labra]", "<b>labra</b>")

Pero no se si en tu caso es posible hacer eso, creo que no, entonces te queda simplemente crear un algoritmo mas avanzado para tu replace en el texto.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #9 (permalink)  
Antiguo 31/05/2005, 10:57
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
se supone que como te he puesto antes, que busque " "&palabra&" ", tiene que funcionar, ya que eso buscaría palabras completas, con espacios delente y detrás. más después con punto o coma
  #10 (permalink)  
Antiguo 31/05/2005, 11:06
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Hola!

A mi me parece que son muchas variantes:

1. La palabra empieza con ¡
1. La palabra empieza con ¿
2. La palabra termina con .
2. La palabra termina con ,
2. La palabra termina con :
2. La palabra termina con ;
2. La palabra termina con ?
2. La palabra termina con !
2. La palabra termina con .

3. La palabra empieza al principio de la cadena
3. La palabra esta al fina de la cadena sin mas caracteres

Y bueno, como ya se trata de frases completas seguramente se me escapa algunos otros casos que no estoy contemplando, a eso me referia con un algoritmo mas completo, tambien el problema es que comunmente en una busqueda resaltas las palabras clave que usaste, no solamente la frase completa, entonces todos esos detalles deben contemplarse en este caso.

Lo cual lo vuelve un poquito mas complejo que el replace.
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #11 (permalink)  
Antiguo 31/05/2005, 11:07
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 4 meses
Puntos: 2
Coñe, pues tienes toda la razón trasgukabi, no se si antes habria escrito algo mal o mi ordenador se a quedado traspuesto o yo que ya ni veo las lineas, pero ahora con " "&palabras&" " funciona perfectamente, gracias, y perdonar el despiste.

Por cierto, en principio lo del punto la coma y demás, no hace falta ponerlo ya que lo reconoce bien.

Un saludo y gracias
__________________
asp, php, .net, adaptandose a las necesidades
  #12 (permalink)  
Antiguo 31/05/2005, 11:24
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
también puede hacerse con expresiones regulares (mucho más rápido) pero ahora no me voy a poner a explicar, que el pequeño profesor que llevo dentro se me ha ido de juerga. GOOGLEANDO, que es gerundio!!!!
  #13 (permalink)  
Antiguo 31/05/2005, 11:24
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Lo reconoce bien porque no tenés un punto, coma u otro signo inmediatamente después (o antes) de la palabra en cuestión. Ni la palabra a resaltar (o a aplicarle el enlace) está al final de la cadena ni al comienzo de ella.

En caso de tener que resaltar espacioIMPRESIONISMOespacio pero tenés [B]espacio"impresionismo"espacio[B], pues no va a funcionar.

Como dice Neurón es un tema muy complejo. Que, creo, se resolvería de manera más efectiva usando expresiones regulares.
__________________
...___...
  #14 (permalink)  
Antiguo 31/05/2005, 11:26
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
Al le hemos dado a "enviar respuesta" a la vez, o que?

lo de los espacios lo he puesto como ejemplo del muuuucho trabajo que le quedaba para terminarlo y como encauzarlo.
  #15 (permalink)  
Antiguo 31/05/2005, 11:32
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Dont Worry

Que hemos dicho lo mismo los tres al final de cuentas, el replace normal no le ayudara o le creara muchas mas vueltas, tal vez con expresiones regulares se arregle, sera cosa de que el pruebe, pero si es un caso complejo que con el simple replace le costara mucho resolver.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #16 (permalink)  
Antiguo 31/05/2005, 13:59
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Cita:
Iniciado por trasgukabi
Al le hemos dado a "enviar respuesta" a la vez, o que?
Pos si, justo al mismo tiempo, 02:24 pm (según mi GMT)
__________________
...___...
  #17 (permalink)  
Antiguo 01/06/2005, 01:03
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 4 meses
Puntos: 2
Efectivamente Al Zuwaga, como comentas por ahora no me coincia con puntos ni con comas, pero seguramente cuanta más información tenga la página, más posiblilidades habra de ello, como me comentais lo de las expresiones regulares y nunca las e utilizado pues na como dice muy bien trasgukabi, a buscar en google o alltheweb, jeje, esta muy bien sobre todo cuando sabes que buscar como en este caso, voy a ver si localizo esto y si encuentro una buena forma de hacer esto lo pongo por aqui.

Un saludete
__________________
asp, php, .net, adaptandose a las necesidades
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:05.