2012-11-05 29 views
0

我想找到一个更简单的方法来更改当前网址上的2个变量,而不必拆分网址并重新构建它。简单的方法来改变当前的网址

例如,如果我有一个网址http://www.anysite.com/any/12/this/url/10/20,并希望到最后变成变量10202030的例子有比使用window.location.href.split("/")则不必重新构建整个URL更简单的方法?

+0

重建将是唯一的办法,虽然也有替代品'分裂()'。 –

+0

我想你可以使用正则表达式匹配函数来完成你想要的任务吗?不确定 –

回答

0

你可以抓住它是一个字符串,然后修剪和追加,如你所见。

你可以抓住它作为一个字符串,并使用搜索和替换。

你可以抓住它作为一个字符串,并运行GREP反对它。

但是,老实说,可能是最简单的做分割/数组的事情。

这一切都取决于您必须遵守的格式化规则。

0

您可以使用正则表达式:

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”替换它。根据你想要做替换的具体情况,你可以稍微调整一下正则表达式来允许或禁止某些情况。

2

随着正则表达式函数替换:

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]。

+0

+1是否提供动态解决方案。你应该用一个右括号关闭你的替换调用。 – cbayram

+0

完成:)谢谢 – Gael

0

好的,这是一个你可以使用的功能。

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

相关问题