如何使用javascript删除网址的一部分

时间:2013-09-04 21:13:42

标签: javascript regex

如果有一个url,我需要删除它的时间戳部分。我将如何在javascript中完成。

首选的正则表达式或字符串操作?

这是网址,

"%7B%22def%22%3A%22f%3Ar%22%2C%22a%22%3A%7B%22v%22%3A%7B%22r%22%3A%22005x0000001R9JRAA0%22%7D%7D%2C%22t%22%3A1378328815840%7D"
                                                                                                      ^

t%22%3A1378328815840%7D,这是我需要从网址中删除的内容,它是时间戳。

1 个答案:

答案 0 :(得分:3)

因为这会编码JSON字符串

{"def":"f:r","a":{"v":{"r":"005x0000001R9JRAA0"}},"t":1378328815840}

你可以做到

function removeTimestamp(uriStr) {
  // Decode the JSON encoded in the URI.
  var jsonObj = JSON.parse(decodeURIComponent(uriStr));
  // Remove the "t" property.
  delete jsonObj['t'];
  // Re-encode as a URI-encoded JSON string
  return encodeURIComponent(JSON.stringify(jsonObj));
}

在您的输入字符串

var s = "%7B%22def%22%3A%22f%3Ar%22%2C%22a%22%3A%7B%22v%22%3A%7B%22r%22%3A%22005x0000001R9JRAA0%22%7D%7D%2C%22t%22%3A1378328815840%7D"

var sWithoutTimestamp = removeTimestamp(s);

alert(sWithoutTimestamp);

产生下面的第一行。我给时间戳部分留了一个空白,这样你就可以轻松地将它与原始部分进行比较。

Modified: %7B%22def%22%3A%22f%3Ar%22%2C%22a%22%3A%7B%22v%22%3A%7B%22r%22%3A%22005x0000001R9JRAA0%22%7D%7D                          %7D
Original: %7B%22def%22%3A%22f%3Ar%22%2C%22a%22%3A%7B%22v%22%3A%7B%22r%22%3A%22005x0000001R9JRAA0%22%7D%7D%2C%22t%22%3A1378328815840%7D

JavaScript没有指定密钥迭代顺序,JSON.stringify的输出依赖于密钥迭代顺序,因此在某些解释器上您可能会看到属性的重新排序,但它不应该影响输出的含义。


如果URI不是UTF-8编码且包含非ASCII代码点,则此代码也可能会出现奇怪的事情。