reemplazar espacios en una cadena con guiones

Tengo una cadena y necesito arreglarla para agregarla a una consulta.

Digamos que tengo la cadena "Una canasta para cada ocasión" y quiero que sea "Una canasta para cada ocasión".

Necesito encontrar un espacio y reemplazarlo con un guión. Luego, necesito verificar si hay otro espacio en la cadena. Si no, devuelve la cadena fija. Si es así, vuelva a ejecutar el mismo proceso.

Me parece una función recursiva, pero no estoy seguro de cómo configurarla. Cualquier ayuda sería muy apreciada.

preguntado el 22 de mayo de 12 a las 17:05

3 Respuestas

Puede usar un reemplazo de expresiones regulares como este:

var str = "A Basket For Every Occasion";
str = str.replace(/\s/g, "-");

El indicador "g" en la expresión regular hará que se reemplacen todos los espacios.


Es posible que desee colapsar varios espacios en un solo guión para no terminar con varios guiones seguidos. Eso se vería así:

var str = "A Basket For Every Occasion";
str = str.replace(/\s+/g, "-");

respondido 23 mar '13, 16:03

@Tamil: no entiendo tu comentario. El OP claramente no sabía sobre el reemplazo global de expresiones regulares, así que los estaba educando sobre eso y mostrándoles cómo funciona, lo cual está en el espíritu de SO y en beneficio de los futuros espectadores). Además, ofrecí una idea de mejora que evitaría varios guiones seguidos. ¿Cómo crees que debería haberse contestado esta pregunta? - amigo00

@ jfriend00 Lo siento si puse algo mal, pero podrías haberle preguntado si había intentado algo hasta ahora en el mismo OP. De lo contrario, pensaría en SO al momento siguiente, pensaría en un problema en lugar de tratar de resolverlo. - Tamil

@Tamil: entiendo ese punto, pero en este caso, estaba claro que el OP solo podía pensar en una función recursiva que reemplazaría un espacio a la vez (eso es lo que estaban pensando en intentar), pero el OP pensó que debía ser algo mejor disponible por lo que estaba pidiendo ideas sobre eso. En ese sentido, me pareció una pregunta justa. - amigo00

Use reemplazar y buscar para espacios en blanco \s globalmente (bandera g)

var a = "asd asd sad".replace(/\s/g,"-");

se convierte en

"asd-asd-sad"

respondido 23 mar '13, 16:03

Trata

value = value.split(' ').join('-');

Usé esto para deshacerme de mis espacios. En lugar del guión, lo hice vacío y funciona muy bien. También es todo JS. .split(limiter) eliminará el limitador y colocará las piezas de cuerda en una matriz (sin elementos limitadores), luego podrá unir la matriz con los guiones.

respondido 23 mar '13, 16:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.