如果有一个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
,这是我需要从网址中删除的内容,它是时间戳。
答案 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代码点,则此代码也可能会出现奇怪的事情。