0

我试图找到一种更简单的方法来更改当前 url 上的 2 个变量,而无需拆分 url 并重新构建它。

例如,如果我有一个 url ,并且http://www.anysite.com/any/12/this/url/10/20想将最后一个更改为变量,10例如,有没有比使用更简单的方法,那么必须重新构建整个 url? 202030window.location.href.split("/")

4

5 回答 5

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;
});

这将具有格式的字符串的一部分替换为: [number]/[number] 并且位于字符串 'url' 的末尾(因为在模式的末尾有一个 $ )格式的字符串:[数字+10]/[数字+10]。

于 2012-11-05T23:18:14.317 回答
1

如果这是您想要的,使用正则表达式将是避免分裂的最佳方法。

参见(例如):

至于替换 URL,这将是一个问题location.replace(/* new URL here*/),实际上是在浏览器历史记录中替换 URL。

于 2012-11-05T23:11:14.567 回答
0

您可以使用正则表达式:

var url = "http://www.anysite.com/any/12/this/url/10/20";
var newURL = url.replace(/10\/20$/, "20/30");

此正则表达式在 URL 末尾查找“10/20”并将其替换为“20/30”。根据您想要进行替换的确切情况,您可能会稍微调整正则表达式以允许或禁止某些情况。

于 2012-11-05T23:13:08.640 回答
0

你可以抓住它是一个字符串,然后按照你认为合适的方式修剪和附加。

您可以将其作为字符串抓取并使用搜索和替换。

您可以将其作为字符串抓取并对其运行 GREP。

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

这完全取决于您必须遵守的格式规则。

于 2012-11-05T23:10:46.140 回答
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;
}

在这里提琴

于 2012-11-05T23:59:11.677 回答