【问题标题】:javascript .replace() does not replace every occurencejavascript .replace() 不会替换每次出现
【发布时间】:2016-04-19 09:49:17
【问题描述】:

我在检索它时得到以下信息。

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 ? 制作一个合适的对象

【问题讨论】:

  • 控制台中的简单测试证明并非如此:一切都被替换了。
  • 按预期工作:- ideone.com/NHCElY

标签: javascript json regex replace


【解决方案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);

【讨论】:

  • decodeURIComponent() 是最好的方法,让它成为你的主要答案。
猜你喜欢
  • 2012-09-25
  • 2016-01-23
  • 2011-08-17
  • 2021-05-02
  • 1970-01-01
  • 2021-09-29
  • 1970-01-01
  • 2018-09-08
  • 1970-01-01
相关资源
最近更新 更多