Foros del Web » Programando para Internet » Javascript »

Problemas con cadena.replace

Estas en el tema de Problemas con cadena.replace en el foro de Javascript en Foros del Web. Tengo la siguiente función: Código: function ilaform(id) { receptor = eval('window.opener.document.elform.elcampo'); id=id.replace(/+/g," "); receptor.value = id; window.close(); } Esta función está en una ventana que ...
  #1 (permalink)  
Antiguo 07/08/2002, 05:19
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 4 meses
Puntos: 17
Problemas con cadena.replace

Tengo la siguiente función:
Código:
function ilaform(id) {
receptor = eval('window.opener.document.elform.elcampo');
id=id.replace(/+/g," ");
receptor.value = id;
window.close();
}
Esta función está en una ventana que llamo desde otra y sirve para pasar valores de una página a un formulario.
La función funciona bien con cadenas sin espacios. Con cadenas con espacios funcionaba mal, así que usé una función PHP que me convierte los espacios en "+".
Para recuperar bien las cadenas, uso la línea:
id=id.replace(/+/g," ");

Que se supone que sustituye los "+" por " ".
Sin embargo, no funciona.
Me estraña que no funcione porque
id=id.replace(/azul/g,"verde");
me ha funcionado anteriormente en otras páginas.

¿Alguien puede ayudarme? Necesito substituir todos los "+" que haya en la cadena por " ".

Joe Tawers,
<a href="http://www.ilimit.com/towers">http://www.ilimit.com/towers</a>
  #2 (permalink)  
Antiguo 07/08/2002, 09:25
 
Fecha de Ingreso: enero-2002
Ubicación: Yerba Buena - Tucumán
Mensajes: 259
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Problemas con cadena.replace

Cita:
id=id.replace(/+/g,&quot; &quot;);
No entiendo muy bien porque usas /+/g, pero por las dudas (tal vez ya lo sepas) te digo que en java la función replace solo remplaza la 1º coincidencia que encuentre en la cadena pero no reemplaza TODAS como si lo hace la función Replace de VBScript por ejemplo.
Para reemplazar todas las coincidencias lo que tendrás que hacer es un bucle en donde mientras no encuentre mas coincidencias siga haciendo el reemplazo. Sería mas o menos así:

while (cad.search(&quot;+&quot;) != -1) {
cad = cad.replace(&quot;+&quot;,&quot; &quot;);
}

Espero que te sirva de algo.

Saludos :cantar:

<center><font face=Verdana size=2>Webmaster de [/CODE]<A href="http://www.salirxtucuman.com.ar" target="_blank"><img src="http://www.efrance.fr/salirxtucuman/images/titulo.gif" border=0 align="absmiddle"></a></center>
  #3 (permalink)  
Antiguo 07/08/2002, 10:21
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 4 meses
Puntos: 17
Re: Problemas con cadena.replace

id=&quot;mi casa es azul y mi perro es azul&quot;;
id=id.replace(&quot;azul&quot;,&quot;verde&quot;);
[Ahora id = &quot;mi casa es verde y mi perro es azul&quot;]

id=&quot;mi casa es azul y mi perro es azul&quot;;
id=id.replace(/azul/g,&quot;verde&quot;);
[Ahora id = &quot;mi casa es verde y mi perro es verde&quot;]

Pero no sé por qué no funciona con /+/g
Es lo malo de los copy&amp;paste a ciegas

Joe Tawers,
<a href="http://www.ilimit.com/towers">http://www.ilimit.com/towers</a>
  #4 (permalink)  
Antiguo 07/08/2002, 10:59
Usuario no validado
 
Fecha de Ingreso: julio-2001
Mensajes: 766
Antigüedad: 22 años, 9 meses
Puntos: 0
Re: Problemas con cadena.replace

que tal asi

no es tu ejemplo pero te dara una idea de como hacerlo


&lt;script language=&quot;Javascript&quot;&gt;
&lt;!--
receptor = &quot;hola+como+estas+que+haces&quot;
id=receptor.replace(/\+/g,&quot; &quot;);
alert(id)
//--&gt;
&lt;/script&gt;


mira /\+/g en las expresiones regulares el + sirve para decirle que esa expresion se puede repetir de 1 hasta N veces ok el \ hace que el + ya no se identifique como identificador sino como patron

<center><hr size="1" width="100%" noshade><a href=javascript:MsgrApp.LaunchIMUI('gpa36@hotmail. com')>
<strong><font face="courier new" color="#666666" size="2">Contact Me?[/CODE]</strong>
<IMG SRC="http://woertman.org:8080/msn/gpa36" border="0"></A></ce
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 05:21.