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

Mais le remplacement des fonctions arrête à la première instance de la « » et je reçois leJavaScript .replace remplace seulement le premier match

Résultat: "this%20is a test"

Toutes les idées sur où Im va mal je suis sûr C'est une solution simple.

+5

Dans ce cas, remplacer() est une méthode JavaScript String. Aucun jQuery impliqué. – ajm

+6

+1 pour ne pas utiliser jQuery –

+0

Copie possible de [Remplacer toutes les occurrences d'une chaîne en JavaScript] (http://stackoverflow.com/questions/1144783/replacing-all-occurrences-of-a-string-in-javascript) – chharvey

Répondre

143

Vous avez besoin d'un /g là-bas, comme ceci:

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

You can play with it here, le comportement par défaut .replace() est de remplacer seulement le premier match, the /g modifier (global), il dit de remplacer toutes les occurrences.

+2

A fait exactement ce qui était nécessaire. Je vous remercie. – Yardstermister

+0

Pour remplacer un tuyau, voir [this] (http://stackoverflow.com/questions/7795749/replace-pipe-and-comma-with-regex-in-javascript). – craned

-3

Essayer utilisant replaceWith() ou replaceAll()

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

+0

... qui a upvoted cela? –

+1

N'a-t-il pas demandé une version de JQuery? Je ne vois pas de .replace() dans l'API JQuery - c'est du Javascript à la vanille. – amfeng

+2

@Nick Êtes-vous jaloux ou quoi? :) –

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

From w3schools

la méthode replace() recherche d'une entre une sous-chaîne (ou expression régulière) et d'une chaîne de caractères, et remplace la sous-chaîne correspondante par une nouvelle sous-chaîne

serait préférable d'utiliser un regex ici alors:

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

merci pour la référence, ce n'est pas un exemple facile à suivre avec l'espace vide étant la valeur de remplacement (par exemple// g). – TheEmirOfGroofunkistan

3

Essayez d'utiliser une expression régulière au lieu d'une chaîne pour le premier argument.

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

Questions connexes