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

Ale zastąpić funkcje zatrzymuje się w pierwszym rzędzie z „” i otrzymujęJavaScript .replace zastępuje tylko pierwszy mecz

Wynik: "this%20is a test"

Wszelkie pomysły gdzie Im będzie źle im pewien to prosta naprawa.

+5

W tym przypadku, należy wymienić() to metoda JavaScript String. Brak jQuery. – ajm

+6

+1 za niewykorzystanie jQuery –

+0

Możliwy duplikat [Zastąpienie wszystkich wystąpień ciągu w JavaScript] (http://stackoverflow.com/questions/1144783/replacing-all-occurrences-of-a-string-in-javascript) – chharvey

Odpowiedz

143

trzeba /g tam coś takiego:

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

You can play with it here, domyślne zachowanie .replace() jest zastąpienie tylko pierwszy mecz, the /g modifier (globalne) informuje go, aby zastąpić wszystkie wystąpienia.

+2

Czy dokładnie to, co było potrzebne. Dziękuję Ci. – Yardstermister

+0

Aby wymienić rurę, zobacz [to] (http://stackoverflow.com/questions/7795749/replace-pipe-and-comma-with-regex-in-javascript). – craned

-3

Spróbuj użyć replaceWith() lub replaceAll()

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

+0

... kto to przegłosował? –

+1

Czy on nie poprosił o wersję JQuery? Nie widzę .replace() w JQuery API - to jest wanilii JavaScript. – amfeng

+2

@Nick Czy jesteś zazdrosny czy co? :) –

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

From w3schools

replace() sposób wyszukuje meczu między podciągu (lub wyrażenia regularnego) i ciąg, i zastępuje dopasowany podciąg z nowym podłańcuchem

Byłoby lepiej użyć wyrażenia regularnego tu wówczas:

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

Dziękuję za referencję, nie jest to łatwy przykład do naśladowania z pustym miejscem będącym wartością zastępowania (np.// G). – TheEmirOfGroofunkistan

3

Spróbuj użyć regex zamiast ciąg dla pierwszego argumentu.

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