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

Filtrado de palabras contenidas en un vector

Estas en el tema de Filtrado de palabras contenidas en un vector en el foro de ASP Clásico en Foros del Web. Hola a todos, tengo un problema ya que tengo una funcion que me recorre un texto y todas aquellas palabras que hay dentro de un ...
  #1 (permalink)  
Antiguo 05/02/2004, 07:51
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 4 meses
Puntos: 2
Filtrado de palabras contenidas en un vector

Hola a todos, tengo un problema ya que tengo una funcion que me recorre un texto y todas aquellas palabras que hay dentro de un vector me los sustituye por un enlace a esa palabra, pero me da el error siguiente:

Error de Microsoft VBScript en tiempo de ejecución error '800a005e'

Uso no válido de Null: 'Replace'

/inicio.asp, line 377

La linea 377 es la siguiente voy a poner el codigo completo de esa parte

descipcion = Split(RS10("PALABRAS"),",") 'convierte cada separación señalada por , en un elemento de un vector


for I=LBound(descipcion) to UBound(descipcion)

'Esto lo pongo para ver que el vector tiene algo
'response.write "-----."&descipcion(I)&".-------<br>"

Response.write Replace(Replace(RS5("TEXTOS"),chr(13),"<br>"),desc ipcion(I),"<a href=palabras.asp?titulo="&Replace(Trim(descipcion (I))," ","%20")&">"&descipcion(I)&"</a>")

next

Donde puede estar el fallo???

Un saludo
__________________
asp, php, .net, adaptandose a las necesidades
  #2 (permalink)  
Antiguo 06/02/2004, 15:01
 
Fecha de Ingreso: febrero-2004
Ubicación: Puebla, Pue., México
Mensajes: 15
Antigüedad: 20 años, 4 meses
Puntos: 0
Hola, el error esta en el segundo y en el tercer parametró, ya que el segundo parámetro indica el separador y no se acepta un valor nulo, '', si quieres que el separador sea el espacio debes ponerlo
' ' o usar simplemente

descipcion = Split (RS10("PALABRAS"))

por omisión toma el espacio como separador.
en cuanto al tercer parámetro debe ser un número que indica el número de subcadenas que se devuelven, si escribes -1 o si no pones este parámetro, se devuelven todas las subcadenas que encuentre Split.

Atte.
__________________
Julio Alberto Villegas Mireles
  #3 (permalink)  
Antiguo 06/02/2004, 16:54
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98


Mhhhhhh, a mi parecer ese no es el error, está creando correctamente el arreglo a partir de la función split, en donde el elemento de separación es la "," creo yo que el problema lo trae en tu Recordset cuando viene nulo el campo textos, no puedes hacer un replace a un nulo...

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #4 (permalink)  
Antiguo 09/02/2004, 05:00
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 4 meses
Puntos: 2
Yo lo que tengo en la base de datos en PALABRAS, tengo esta descripción, separada por comas, que es el delimitador que le e puesto:

surrealistas,dadaistas,experimental

si es cierto es por el null, es que la palabra experimental no esta contenida en el texto, por eso me da el fallo.

Pues no, no es ese el fallo, si existen las tres palabras, pues no se cual puede ser el fallo

Un saludo
__________________
asp, php, .net, adaptandose a las necesidades

Última edición por haven; 09/02/2004 a las 05:05
  #5 (permalink)  
Antiguo 09/02/2004, 06:34
 
Fecha de Ingreso: enero-2004
Mensajes: 154
Antigüedad: 20 años, 4 meses
Puntos: 0
Concatena siempre el valor al que vas a aplicar un replace con ""
Por ejemplo
replace(descripcion(I)&"",".",",")

puede ser que el campo sea nulo y así en vez de nulo lo conviertes en vacio(""), ademas te ahorras problemas con valores numéricos, ...

Te lo dice un español.. je,je,je...
  #6 (permalink)  
Antiguo 09/02/2004, 07:32
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 4 meses
Puntos: 2
No se que fallo hay, he probado lo que me has comentado ivan_noe, pero tampoco funciona, bien veamos, yo tengo este texto:

Manifestaciones artísticas en directo sobre un programa preestablecido y con la participación del espectador.
Se desarrolla enmarcada por los límites del espacio y del tiempo, con carácter clarmente combativo y experimental

Sus orígenes están en los procesos de experimentos vanguardistas realizados por los surrealistas y los dadaistas

y en la base de datos tengo estas palabras:

surrealistas,dadaistas,experimental

no tiene espacios solo las comas para separar cada palabra, le marco un response.write para que me saque que palabras consulta y las muestra sin problemas, todas separadas y sin comas, pero nada hace el recorrido

for I=LBound(descipcion) to UBound(descipcion)
Response.write Replace(Replace(RS5("TEXTOS"),chr(13),"<br>"),desc ipcion(I),"<a href=palabras.asp?titulo="&Replace(Trim(descipcion (I))," ","%20")&">"&descipcion(I)&"</a>")
next

Lo que hace es buscarme perfectamente el primer nombre y sustituirlo por un enlace, me hace el segundo con el response.write, veo que lo saca en pantalla, pero al intentar hacer el cambio con la palabra dadaista me sale el error

Error de Microsoft VBScript en tiempo de ejecución error '800a005e'

Uso no válido de Null: 'Replace'

/inicio.asp, line 391

y no es nulo, ya que me muestra que la palabra a cambiar es dadaista, así que no se cual puede ser el error?????

Un saludo
__________________
asp, php, .net, adaptandose a las necesidades
  #7 (permalink)  
Antiguo 09/02/2004, 07:40
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 4 meses
Puntos: 2
Una cosa más, si le pongo el concatenado com oa comentado ivan_noe

Response.write Replace(Replace(RS5("TEXTOS")&"",chr(13),"<br>"),d escipcion(I),"<a href=palabras.asp?titulo="&Replace(Trim(descipcion (I))," ","%20")&">"&descipcion(I)&"</a>")

de esta forma no me da error, pero tampoco me sustituye las tres palabras solo la primera que esta en la lista , en cambio el recorrido por el vector si lo hace correstamente con el response.write, así que cual es el fallo????

Un saludo
__________________
asp, php, .net, adaptandose a las necesidades
  #8 (permalink)  
Antiguo 09/02/2004, 08:00
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 4 meses
Puntos: 2
Vale ya se cual es el problema, el problema es que no me hace bien el recorrido solo lo hace una vez.

La cuestion seria hacerlo de la siguiente forma:

texto = Replace(Replace(RS5("TEXTOS")&"",chr(13),"<br>"),d escipcion(0),"<a href=palabras.asp?titulo="&Replace(Trim(descipcion (0))," ","%20")&">"&descipcion(0)&"</a>")

texto2 = Replace(texto,descipcion(1),"<a href=palabras.asp?titulo="&Replace(Trim(descipcion (1))," ","%20")&">"&descipcion(1)&"</a>")

texto3 = Replace(texto,descipcion(2),"<a href=palabras.asp?titulo="&Replace(Trim(descipcion (2))," ","%20")&">"&descipcion(2)&"</a>")

Y luego mostrar el texto3, pero claro eso como lo hago para que lo haga automaticamente sin qu eyo le tenga que poner el numero de vector, ya que el numero de palabras a buscar en el texto puede ser diferente en cada caso???

como sería esto algo asi???



response.write texto&Cantidaddescripciones
end if
next
__________________
asp, php, .net, adaptandose a las necesidades
  #9 (permalink)  
Antiguo 09/02/2004, 08:02
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 4 meses
Puntos: 2
Vale ya se cual es el problema, el problema es que no me hace bien el recorrido solo lo hace una vez.

La cuestion seria hacerlo de la siguiente forma:

texto = Replace(Replace(RS5("TEXTOS")&"",chr(13),"<br>"),d escipcion(0),"<a href=palabras.asp?titulo="&Replace(Trim(descipcion (0))," ","%20")&">"&descipcion(0)&"</a>")

texto2 = Replace(texto,descipcion(1),"<a href=palabras.asp?titulo="&Replace(Trim(descipcion (1))," ","%20")&">"&descipcion(1)&"</a>")

texto3 = Replace(texto,descipcion(2),"<a href=palabras.asp?titulo="&Replace(Trim(descipcion (2))," ","%20")&">"&descipcion(2)&"</a>")

Y luego mostrar el texto3, pero claro eso como lo hago para que lo haga automaticamente sin qu eyo le tenga que poner el numero de vector, ya que el numero de palabras a buscar en el texto puede ser diferente en cada caso???

como sería esto algo asi???

for I=LBound(descipcion) to UBound(descipcion)

Cantidaddescripciones = UBound(descipcion)

texto&I = Replace(Replace(RS5("TEXTOS")&"",chr(13),"<br>"),d escipcion(I),"<a href=palabras.asp?titulo="&Replace(Trim(descipcion (I))," ","%20")&">"&descipcion(I)&"</a>")

response.write texto&Cantidaddescripciones
end if
next

Bueno algo así igual no, porque no me funciona, alguien sabe la forma de hacerlo????

Un saludo
__________________
asp, php, .net, adaptandose a las necesidades
  #10 (permalink)  
Antiguo 09/02/2004, 14:22
 
Fecha de Ingreso: enero-2004
Mensajes: 154
Antigüedad: 20 años, 4 meses
Puntos: 0
texto=""
for I=LBound(descipcion) to UBound(descipcion)

Cantidaddescripciones = UBound(descipcion)

texto = texto&Replace(Replace(RS5("TEXTOS")&"",chr(13),"<b r>"),descipcion(I),"<a href=palabras.asp?titulo="&Replace(Trim(descipcion (I))," ","%20")&">"&descipcion(I)&"</a>")

next
response.write texto


esto te visualiza el texto con las palabras que quieres.
en la variable texto vas concatenando hasta que llegas a la condicion de parada

A ver si ahora tienes las cosas mas claras
  #11 (permalink)  
Antiguo 10/02/2004, 03:40
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 4 meses
Puntos: 2
Hola ivan_noe, no es que tenga las cosas poco claras, lo que pasa es que siempre tiendo a hacer las cosas lo mas largas posibles y ya es hora de que empiece ha hacer las cosas con menos lineas de código, yo lo que he puesto es condiciones así lo que tendria sería esto:

if Cantidaddescripciones = 0 then

texto0 = Replace(Replace(RS5("TEXTOS")&"",chr(13),"<br>"),d escipcion(0),"<a href=palabras.asp?titulo="&Replace(Trim(descipcion (0))," ","%20")&">"&descipcion(0)&"</a>")

response.write texto0

end if

if Cantidaddescripciones = 1 then

texto0 = Replace(Replace(RS5("TEXTOS")&"",chr(13),"<br>"),d escipcion(0),"<a href=palabras.asp?titulo="&Replace(Trim(descipcion (0))," ","%20")&">"&descipcion(0)&"</a>")

texto1 = Replace(texto0,descipcion(1),"<a href=palabras.asp?titulo="&Replace(Trim(descipcion (1))," ","%20")&">"&descipcion(1)&"</a>")

response.write texto1

end if

if Cantidaddescripciones = 2 then


texto0 = Replace(Replace(RS5("TEXTOS")&"",chr(13),"<br>"),d escipcion(0),"<a href=palabras.asp?titulo="&Replace(Trim(descipcion (0))," ","%20")&">"&descipcion(0)&"</a>")

texto1 = Replace(texto0,descipcion(1),"<a href=palabras.asp?titulo="&Replace(Trim(descipcion (1))," ","%20")&">"&descipcion(1)&"</a>")

texto2 = Replace(texto1,descipcion(2),"<a href=palabras.asp?titulo="&Replace(Trim(descipcion (2))," ","%20")&">"&descipcion(2)&"</a>")



response.write texto2

De esta forma vamos sacando los valores y las palabras subrayadas.

Tal y como lo has puesto tu, si es verdad que lo haces de una vez y no tienes limitaciones en cuanto a las palabras que quieres poner, el problema es que concatena el texto tres veces, no me recorre el mismo texto tres veces y sustituye las palabras en el mism texto lo que hace es repetir el texto tantas veces como palabras hay en mi base de datos, yo creo que debería ser algo así:


texto = Replace(RS5("TEXTOS")&"",chr(13),"<br>")


for I=LBound(descipcion) to UBound(descipcion)

texto = Replace(texto,descipcion(I),"<a href=palabras.asp?titulo="&Replace(Trim(descipcion (I))," ","%20")&">"&descipcion(I)&"</a>")

next

Gracias me has ayudado mucho.

Un saludo
__________________
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 16:41.