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

Hacer un único replace aunque se encuentren varias coincidencias...

Estas en el tema de Hacer un único replace aunque se encuentren varias coincidencias... en el foro de ASP Clásico en Foros del Web. No se si esto se podrá hacer, pero os cuento lo que necesito, a ver si a alguien se le ocurre algo. Quiero coger un ...
  #1 (permalink)  
Antiguo 09/06/2010, 07:39
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 21 años, 4 meses
Puntos: 8
Hacer un único replace aunque se encuentren varias coincidencias...

No se si esto se podrá hacer, pero os cuento lo que necesito, a ver si a alguien se le ocurre algo.
Quiero coger un texto bastante largo y hacer un replace, peeeero, quiero que solo se haga una vez, aunque haya varias coincidencias, pongo un ejemplo para que se vea más claro. Si tenemos el siguiente texto asignado a una variable

var = "Hola esto es una prueba de replace que estoy haciendo"

Y hago un replace cambiando la O por R, quiero que solo se sustituya la primera y no todas.
Evidentemente si hago Replace(var, "o","R") me cambiará todos las o. Hay alguna forma de que solo me cambie la primera??

Salu2
__________________
Vayamos por Partes :: Jack el Destripador
  #2 (permalink)  
Antiguo 09/06/2010, 07:47
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Hacer un único replace aunque se encuentren varias coincidencias...

Hola

Pon el Global a False

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 09/06/2010, 07:52
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 21 años, 4 meses
Puntos: 8
Respuesta: Hacer un único replace aunque se encuentren varias coincidencias...

Mande???? Al final he encontrado dos formas de hacerlo.

a) La simple, leer bien lo que se puede hacer con el replace, resulta que se le puede indicar las veces que quieres que lo haga,

b) La rebuscada pero igualmente efectiva. Mediante instr busco la posicion de la primera coincidencia, después con left y right me guardo lo que hay antes y después, y finalmente lo concateno poniendo en miedo lo que interesa ;)
__________________
Vayamos por Partes :: Jack el Destripador
  #4 (permalink)  
Antiguo 09/06/2010, 07:54
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 21 años, 4 meses
Puntos: 8
Respuesta: Hacer un único replace aunque se encuentren varias coincidencias...

Os dejo el código de ambas por si a alguien le viene bien para otras cosas

Código PHP:
<&#37;
cadena "Esto es una prueba de una cadena para probar probar y probar bla bla bla"

posicion instr(cadena,"n")

izquierda left(cadenaposicion-1)
derecha right(cadenalen(cadena)-posicion)

nuevo izquierda "Replaceando" derecha
nuevo2 
replace(cadena,"n","Replaceando",1,1)
response.write cadena "<br>"
response.write nuevo "<br>"
response.write nuevo2
%> 
__________________
Vayamos por Partes :: Jack el Destripador
  #5 (permalink)  
Antiguo 09/06/2010, 07:59
Avatar de Wasper  
Fecha de Ingreso: julio-2006
Ubicación: de cai, picha!!!
Mensajes: 1.030
Antigüedad: 17 años, 9 meses
Puntos: 41
Respuesta: Hacer un único replace aunque se encuentren varias coincidencias...

¿Cual es el objetivo de querer hacer ese Replace solo 1 vez? Es decir, que quieres conseguir realente (Ya que que quieres sustuir una letra solo 1 vez).
__________________
Saludos, Jose

Paginas web y SEO
Anuncios por palabras
  #6 (permalink)  
Antiguo 09/06/2010, 08:07
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 21 años, 4 meses
Puntos: 8
Respuesta: Hacer un único replace aunque se encuentren varias coincidencias...

A ver, te explico un poco el tema en cuestión. Hace algún tiempo monté un sistema de envío de circulares. El usuario se crea un word con el formato que quiera, lo guarda como html y a la hora de enviar la circular rellena un formulario con unos criterios para ver a quien se guarda y se sube el html al servidor. Acto seguido se hace una búsqueda en la base de datos de empresas/asociado/clientes con los criterios, se lee el contenido del html para usarlo como cuerpo del mail y se les va enviando.
Algún tiempo después quisieron añadirle un sistema de estadísticas para saber a quien se envian cuantas cosas, de que zonas etc etc y una de las cosas que querían saber era cuanta gente abria esos correos y cuantas veces, asi que se me ocurrió que en cada correo que se manda, añado a una imagen unos parámetros (referencia de la circular y referencia del cliente), cuando ellos abren el correo, como las imágenes están alojadas en nuestro servidor, eso queda reflejado en el log de IIS, incluidos los parámetros y de esta manera puedo saber quien ha entrado donde y cuantas veces con unas consultas bastante simples.
El tema está en que en cada mail solo deben ir una vez estos parámetros ya que sino las estadísticas serían erroneas. Hasta ahora lo tenia solucionado porque siempre había al menos una imagen con un nombre concreto, pero ahora se da el caso de que puede haber plantillas que no tengan esa imagen, por lo que quiero buscar cualquier jpg y añadirle esos parámetros, pero solo una vez ;)
__________________
Vayamos por Partes :: Jack el Destripador
  #7 (permalink)  
Antiguo 09/06/2010, 08:39
Avatar de Wasper  
Fecha de Ingreso: julio-2006
Ubicación: de cai, picha!!!
Mensajes: 1.030
Antigüedad: 17 años, 9 meses
Puntos: 41
Respuesta: Hacer un único replace aunque se encuentren varias coincidencias...

En vez de un jpg, pon siempre un Gif de 1 px transparente... lleve o no imagen...

Los que reciben el correo supongo que lo tendran por Outlook, Gmail, terra... o ¿acceden al contenido con un link hacia el servidor?

Lo que quieres es controlar cuantas veces abren ese correo, ¿verdad?

La verdad es que lo veo bastante lioso... sera que tengo sueño...
__________________
Saludos, Jose

Paginas web y SEO
Anuncios por palabras
  #8 (permalink)  
Antiguo 09/06/2010, 08:41
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 21 años, 4 meses
Puntos: 8
Respuesta: Hacer un único replace aunque se encuentren varias coincidencias...

No, no hace falta, se que algun jpg va a llevar siempre, porque las circulares siempre llevan logos, fondos, otras imagenes....
La verdad es que es algo lioso, pero efectivo, ya que de esta manera los usuarios pueden sacar estadísticas acotando periodos, empresas etc etc y se puede explotar muy bien la información ;)
__________________
Vayamos por Partes :: Jack el Destripador
  #9 (permalink)  
Antiguo 09/06/2010, 09:11
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, 2 meses
Puntos: 535
Respuesta: Hacer un único replace aunque se encuentren varias coincidencias...

Pero... es efectivo el método? Digo, los correos que uso normalmente no me muestran las imágenes salvo que yo le diga que quiero verlas (que es menos del 1% de la veces que recibo un mail).
__________________
...___...
  #10 (permalink)  
Antiguo 09/06/2010, 09:29
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 21 años, 4 meses
Puntos: 8
Respuesta: Hacer un único replace aunque se encuentren varias coincidencias...

Ya, ese un problema, pero es la única forma que vimos. Otra opción era pedir la confirmación de recepción y de apertura, pero claro, puede que el servidor de destino no tenga esa opción, que al pedir la confirmación le digan que no... y encima eso solo serviría para recibir un correo de confirmación de cada uno, y teniendo en cuenta que cada circular se envia a entre 500 y 1300 correos... imagínate después la faena de clasificación.
En principio por lo que hemos visto la mayoría de gente permite las imagenes, supongo que en parte por venir de una empresa a la que están asociados o son clientes, y porque les interesa la información que contienen las circulares jeje
__________________
Vayamos por Partes :: Jack el Destripador
  #11 (permalink)  
Antiguo 09/06/2010, 11:28
Avatar de Wasper  
Fecha de Ingreso: julio-2006
Ubicación: de cai, picha!!!
Mensajes: 1.030
Antigüedad: 17 años, 9 meses
Puntos: 41
Respuesta: Hacer un único replace aunque se encuentren varias coincidencias...

Ahora que estoy mas despierto, porque no enviar solo la cabecera de los articulos y esperar que hagan click para ir a la web directamente, de esta manera, si detectaras un problema en uno de los articulos podrias solucionarlo ya que el articulo en si esta en el servidor.

Todo esto suponiendo que la circular tuviera mas de un articulo para ver o incluso para 1 articulo... asi ganas visitas...

De todas formas, es otro sistema mas para contabilizar pero de cara al cliente, nunca lo he probado, pero desde luego no suena mal...

¿Tienes gestor de usuarios? ¿Panel de control para usuarios?
__________________
Saludos, Jose

Paginas web y SEO
Anuncios por palabras
  #12 (permalink)  
Antiguo 09/06/2010, 12:21
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Hacer un único replace aunque se encuentren varias coincidencias...

Cita:
Iniciado por angel_dope Ver Mensaje
Mande???? Al final he encontrado dos formas de hacerlo.

a) La simple, leer bien lo que se puede hacer con el replace, resulta que se le puede indicar las veces que quieres que lo haga,

b) La rebuscada pero igualmente efectiva. Mediante instr busco la posicion de la primera coincidencia, después con left y right me guardo lo que hay antes y después, y finalmente lo concateno poniendo en miedo lo que interesa ;)
No sé por qué pensé que estabas usando expresiones regulares. Algo de lectura
__________________
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;" />
  #13 (permalink)  
Antiguo 10/06/2010, 01:18
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 21 años, 4 meses
Puntos: 8
Respuesta: Hacer un único replace aunque se encuentren varias coincidencias...

Wasper, cada circular es un único artículo con información muy concreta. Pueden entrar también a la web a consultar todas las que hay, pero interesa que lo vean directamente en su correo, el tema de las visitas no es demasiado relevante en este caso concreto.
Ya te digo que el sistema es bastante completo y se adapta a todo lo que necesitamos, de hecho hace un par de años compramos un sistema de gestión de contenidos en el que entre otras cosas se iba a incluir el sistema de circulares, pero como el que yo había hecho estaba ya tan avanzado y adaptado a lo que queremos, pues se sigue usando este jeje.
Los usuarios lo único que pueden hacer es insertar y enviar las circulares y modificar las que ya hay. No hay gestión de usuarios, porque forma parte de la intranet de la empresa y los permisos van por activedirectory ;)

Adler, así ya tiene más sentido jejeje, me habías hecho dudar sobre si habia algo de GLOBAL en el replace, pero mira, me vino bien para investigar un poco más y ver el tema de que se podía especificar el número de cambios que se hace ;)

Salu2
__________________
Vayamos por Partes :: Jack el Destripador

Etiquetas: coincidencias, replace
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 00:41.