2010-07-09 19 views
80
var textTitle = "this is a test" 
var result = textTitle.replace(' ', '%20'); 

Pero el reemplazar las funciones detiene en la primera instancia de la "" y tengo laJavaScript .replace sólo reemplaza primer partido

Resultado: "this%20is a test"

Ideas en donde Im que va mal im seguro es una solución simple.

+5

En este caso, en lugar de() es un método JavaScript de cadena. No jQuery involucrado. – ajm

+6

1 para no usar jQuery –

+0

duplicado posible de [Sustitución de todas las apariciones de una cadena en JavaScript] (http://stackoverflow.com/questions/1144783/replacing-all-occurrences-of-a-string-in-javascript) – chharvey

Respuesta

143

Se necesita un /g allí, así:

var textTitle = "this is a test"; 
var result = textTitle.replace(/ /g, '%20'); 

You can play with it here, el comportamiento predeterminado .replace() es reemplazar sólo el primer partido, the /g modifier (global) le indica que debe reemplazar todas las ocurrencias.

+2

Hicieron exactamente lo que se necesitaba. Gracias. – Yardstermister

+0

Para la sustitución de una tubería, véase [esta] (http://stackoverflow.com/questions/7795749/replace-pipe-and-comma-with-regex-in-javascript). – craned

-3

Intente utilizar replaceWith() o replaceAll()

http://api.jquery.com/replaceAll/

+0

... ¿quién votó en contra de esto? –

+1

¿No le pidió una versión de JQuery? No veo un .replace() en la API de JQuery, eso es vainilla Javascript. – amfeng

+2

@Nick ¿Estás celoso o qué? :) –

6
textTitle.replace(/ /g, '%20'); 
1

From w3schools

El replace() método busca un partido entre una subcadena (o una expresión regular) y una cadena, y reemplaza la subcadena coincidente con una nueva subcadena

sería mejor usar una expresión regular aquí a continuación:

textTitle.replace(/ /g, '%20'); 
+0

gracias por la referencia, no es un ejemplo fácil de seguir con el espacio en blanco que es el valor sustituir (por ejemplo// g). – TheEmirOfGroofunkistan

3

Trate de usar una expresión regular en lugar de una cadena para el primer argumento.

"this is a test".replace(/ /g,'%20') // # => "este% 20 es% 20a% 20test"

Cuestiones relacionadas