2016-04-19 23 views
-1

Ich erhalte beim Abrufen folgendes.javascript .replace() ersetzt nicht jedes Vorkommen

var data = {"distinct_id"%3A "2222222222222"%2C"%24initial_referrer"%3A "%24direct"%2C"%24initial_referring_domain"%3A "%24direct"} 

Wenn ich nach typeof data überprüfe, bekomme ich eine Zeichenfolge zurück.

Wenn ich jedoch versuche, ein richtiges Objekt daraus zu machen, indem ich "% 3A" durch ":" usw. ersetze, ersetzt das obige Objekt nicht alle Vorkommen, sondern nur das erste.

data = data.replace(/\%3A/g,":") ersetzt nur die erste "% 3A".

Wie kann ich mit distinct_id, $initial_referrer as well as we $initial_referring_domain ?

+0

Einfacher Test in der Konsole beweist das Gegenteil: alles ersetzt wird. – dfsq

+1

funktioniert wie erwartet: - http://ideone.com/NHCElY – rock321987

Antwort

1

Testen Sie den Code aus diesem eine richtige Aufgabe machen beweist, dass Ihre replace Nutzung tatsächlich in Ordnung ist, ersetzt es in der Tat alle Vorkommen von %3A:

var data = '{"distinct_id"%3A "2222222222222"%2C"%24initial_referrer"%3A "%24direct"%2C"%24initial_referring_domain"%3A "%24direct"}'; 
 

 
data = data.replace(/\%3A/g, ":"); 
 

 
alert(data);

Allerdings ist, reguläre Ausdrücke nicht korrekt Ansatz er Re, wie Sie auch andere encodierte Entitäten haben. Verwenden Sie decodeURIComponent Funktion statt:

var data = '{"distinct_id"%3A "2222222222222"%2C"%24initial_referrer"%3A "%24direct"%2C"%24initial_referring_domain"%3A "%24direct"}'; 
 

 
data = decodeURIComponent(data); 
 

 
alert(data);

+0

'decodeURIComponent()' ist der beste Ansatz, machen Sie es Ihre wichtigste Antwort. – Tushar

Verwandte Themen