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

problema con intrstr y replace (ignora espacio)

Estas en el tema de problema con intrstr y replace (ignora espacio) en el foro de ASP Clásico en Foros del Web. Hola, tengo un texto y quiero reemplazar las ocurrencias de un texto por otro texto pero solo lo haga con palabras completas... por ejemplo si ...
  #1 (permalink)  
Antiguo 10/11/2009, 21:00
 
Fecha de Ingreso: noviembre-2009
Mensajes: 12
Antigüedad: 15 años, 6 meses
Puntos: 0
problema con intrstr y replace (ignora espacio)

Hola, tengo un texto y quiero reemplazar las ocurrencias de un texto por otro texto pero solo lo haga con palabras completas...
por ejemplo si en el texto esta "normalmente" y busco "normal" que no lo reemplaze porque es parte de una palabra...

Este es el codigo

Código PHP:
txtComp ""
txtNuevoC ""
Dim charsoptions(7'Fixed size array
charsoptions(0) = " "
charsoptions(1) = ","
charsoptions(2) = "."
charsoptions(3) = "'"
charsoptions(4) = "
:"
charsoptions(5) = "
("
charsoptions(6) = "
)"

textoFuente = "
Una frase normal que deberia funcionar normalmente"

textoNuevo = "
<b>normal<b>"
textoViejo = "
normal"

For Each item In charsoptions
    txtComp = " " & textoViejo  & item     
    txtNuevoC = " " & textoNuevo  & item     
    if (InStr(1, textoFuente, txtComp, vbTextCompare) > 0) then                
        textoFuente = replace(textoFuente, txtComp, txtNuevoC, 1, -1, 1)
    end if 
    txtComp = item & textoViejo  &  " "    
    txtNuevoC = item & textoNuevo  & " "     
    if (InStr(1, textoFuente, txtComp, vbTextCompare) > 0) then                
        textoFuente = replace(textoFuente, txtComp, txtNuevoC, 1, -1, 1)
    end if 
Next 
el tema es que me reemplaza normal en los 2 lugares.... no le hace caso al & " "

Alguna idea?
Gracias!
  #2 (permalink)  
Antiguo 11/11/2009, 06:18
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años, 4 meses
Puntos: 126
Respuesta: problema con intrstr y replace (ignora espacio)

Hola

Mejor si usas expresiones regulares

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 11/11/2009, 08:02
 
Fecha de Ingreso: noviembre-2009
Mensajes: 12
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: problema con intrstr y replace (ignora espacio)

voy a probar. Todo lo que encontre era para asp.net por eso pense que en ASP clasico no habia expresiones regulares...

gracias!
  #4 (permalink)  
Antiguo 12/11/2009, 08:15
 
Fecha de Ingreso: noviembre-2009
Mensajes: 12
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: problema con intrstr y replace (ignora espacio)

si, lo solucione con regExp.... usando \b antes y despues de la palabra para qeu se encargue de espacio, punto, coma, etc
  #5 (permalink)  
Antiguo 15/11/2009, 09:19
 
Fecha de Ingreso: noviembre-2009
Mensajes: 12
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: problema con intrstr y replace (ignora espacio)

casi....
Funciona bien, pero en una palabra como Trópico encuentra como que Pico coincide con el patern....supongo que la "ó" la debe tener codificada con algun ; o algo....alguna forma de solucionarlo??

pal = "pico"
regEx.Pattern = "\b" & pal & "\b"

gracias!
  #6 (permalink)  
Antiguo 15/11/2009, 13:42
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años, 4 meses
Puntos: 126
Respuesta: problema con intrstr y replace (ignora espacio)

Hola

Prueba así

regEx.Pattern = "\b("&pal&")+\b"

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #7 (permalink)  
Antiguo 15/11/2009, 16:27
 
Fecha de Ingreso: noviembre-2009
Mensajes: 12
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: problema con intrstr y replace (ignora espacio)

gracias, pero sigue haciendo lo miso...
  #8 (permalink)  
Antiguo 16/11/2009, 06:14
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años, 4 meses
Puntos: 126
Respuesta: problema con intrstr y replace (ignora espacio)

Hola

Prueba ahora

regEx.Pattern = "\b([^á|Á|é|É|í|Í|ó|Ó|ú|Ú]pico[^á|Á|é|É|í|Í|ó|Ó|ú|Ú])+\b"

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #9 (permalink)  
Antiguo 16/11/2009, 20:11
 
Fecha de Ingreso: noviembre-2009
Mensajes: 12
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: problema con intrstr y replace (ignora espacio)

ese no lo reemplaza, pero tampoco lo hace en donde si esta la palabra sola.

Finalmente lo hice haciendo un caso especial para pico y un replace normal...

muchas gracias por las respuestas!
  #10 (permalink)  
Antiguo 17/11/2009, 05:44
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años, 4 meses
Puntos: 126
Respuesta: problema con intrstr y replace (ignora espacio)

Cita:
Iniciado por diegolaz Ver Mensaje
ese no lo reemplaza, pero tampoco lo hace en donde si esta la palabra sola.

Finalmente lo hice haciendo un caso especial para pico y un replace normal...

muchas gracias por las respuestas!
quizás no te he entendido

Este script hace lo estás buscando

Código asp:
Ver original
  1. <%
  2. Function ResaltaParam(str)
  3. Dim objRegExp
  4. Set objRegExp = new RegExp
  5. With objRegExp
  6. .Pattern = "\b([^á|Á|é|É|í|Í|ó|Ó|ú|Ú]pico[^á|Á|é|É|í|Í|ó|Ó|ú|Ú])+\b"
  7. .IgnoreCase = True
  8. .Global = True
  9. End With
  10. str = objRegExp.replace(str, "<strong>$1</strong>")
  11. ResaltaParam = str
  12. Set objRegExp = nothing
  13. End Function
  14. Response.write ResaltaParam("Me gustaría estar en el Trópico por que aquí empieza a hacer frio")
  15. %>

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
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 11:36.