我想找到一个更简单的方法来更改当前网址上的2个变量,而不必拆分网址并重新构建它。简单的方法来改变当前的网址
例如,如果我有一个网址http://www.anysite.com/any/12/this/url/10/20
,并希望到最后变成变量10
和20
到20
和30
的例子有比使用window.location.href.split("/")
则不必重新构建整个URL更简单的方法?
我想找到一个更简单的方法来更改当前网址上的2个变量,而不必拆分网址并重新构建它。简单的方法来改变当前的网址
例如,如果我有一个网址http://www.anysite.com/any/12/this/url/10/20
,并希望到最后变成变量10
和20
到20
和30
的例子有比使用window.location.href.split("/")
则不必重新构建整个URL更简单的方法?
你可以抓住它是一个字符串,然后修剪和追加,如你所见。
你可以抓住它作为一个字符串,并使用搜索和替换。
你可以抓住它作为一个字符串,并运行GREP反对它。
但是,老实说,可能是最简单的做分割/数组的事情。
这一切都取决于您必须遵守的格式化规则。
使用正则表达式是避免发生溢出的最佳方法,如果这就是你想要的。
(例如)参见:
至于更换URL,这将是location.replace(/* new URL here*/)
事项,实际上替换URL中受益浏览器历史。
您可以使用正则表达式:
var url = "http://www.anysite.com/any/12/this/url/10/20";
var newURL = url.replace(/10\/20$/, "20/30");
此正则表达式查找“10/20”的URL的结束,以及“20/30”替换它。根据你想要做替换的具体情况,你可以稍微调整一下正则表达式来允许或禁止某些情况。
随着正则表达式函数替换:
url.replace(/([0-9]*)\/([0-9]*)$/, function(str , n1 , n2){
var new_n1 = 10 + parseInt(n1 , 10);
var new_n2 = 10 + parseInt(n2 , 10);
return new_n1 + '/' + new_n2;
});
这取代了具有格式的字符串的一部分:[编号]/[数],并且是在字符串“URL”的端部(因为在模式结尾处有一个$),其格式为:[数字+10]/[数字+10]。
好的,这是一个你可以使用的功能。
function amendHref(a, b) {
var str = window.location.href;
var newHref = str.replace(/[\d]+\/[\d]+$/, a + "/" + b);
// ^^^^^ digit one or more times
// ^^ (escaped) forward slash
// ^^^^ digit one or more times
// ^end of string
window.location.href = newHref;
}
小提琴here
重建将是唯一的办法,虽然也有替代品'分裂()'。 –
我想你可以使用正则表达式匹配函数来完成你想要的任务吗?不确定 –