2016-04-19 15 views
-1

私はそれを取得する際に次のようになります。javascript .replace()はすべての発生を置き換えません

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

typeof dataをチェックすると、文字列が返されます。

しかし、 "%3A"を ":"などに置き換えて適切なオブジェクトを作成しようとすると、上記のオブジェクトはすべての出現を置き換えるのではなく、最初のものだけを置き換えます。

data = data.replace(/\%3A/g,":")は、最初の "%3A"を置き換えます。私はあなたのコードをテストdistinct_id, $initial_referrer as well as we $initial_referring_domain ?

+0

簡単なテストそうでないことを証明:すべてが置き換えられます。 – dfsq

+1

期待どおりに働いています: - http://ideone.com/NHCElY – rock321987

答えて

1

でこのうち適切なオブジェクトを作成するにはどうすればよい

は、あなたのreplace使用量が実際に大丈夫であることを証明している、それは確かに%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);

、正規表現は正しいアプローチではありません他のコード化エンティティも持っているので、代わりにdecodeURIComponent機能を使用します。コンソールで

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

 
data = decodeURIComponent(data); 
 

 
alert(data);

+0

'decodeURIComponent()'が最良のアプローチです。 – Tushar