使用JavaScript更改url params字符串

时间:2012-03-12 09:22:41

标签: javascript string prototypejs url-parameters

我想从网址字符串中删除一些参数:

例如:

我有一个这样的字符串:

var url = '/browse/102?color=red&type=car&rpp=10&ajax=1&change=1';

和这样的数组:

var ignore = new Array("change","ajax"); 

结果

/browse/102?color=red&type=car&rpp=10

实现这一目标的最短和最快的方法是什么?

3 个答案:

答案 0 :(得分:2)

RegExp怎么样?这是一个示例函数:

var url = '/browse/102?color=red&type=car&rpp=10&a=mode&ajax=1&change=1&mode&test';
var ignore = new Array("change","ajax", "mode", "test"); 
alert(removeParams(url, ignore));

function removeParams(address, params)
{
    for (var i = 0; i < params.length; i++)
    {
       var reg = new RegExp("([\&\?]+)(" + params[i] + "(=[^&]+)?&?)", "g")
       address = address.replace(reg, function($0, $1) { return $1; });
    }
    return address.replace(/[&?]$/, "");
}​

编辑:移动到像Michal B.这样的单独功能。

答案 1 :(得分:1)

这里是一个函数的jsfiddle示例:http://jsfiddle.net/ANGsJ/1/
PS。我使用了Just_Mad的正则表达式,因为我有点丑陋;)

答案 2 :(得分:1)

这是我在我的应用程序中使用的简单实用程序来使用URL。 http://jsfiddle.net/gwB2C/

简单易用:

var url_parser = new URLParser('/browse/102?color=red&type=car&rpp=10&ajax=1&change=1');
alert(url_parser.toString()); 
// result = "/browse/102?color=red&type=car&rpp=10&ajax=1&change=1"
url_parser.removeParams(["color", "type"]);
alert(url_parser.toString()); 
// result = "/browse/102?rpp=10&ajax=1&change=1"
url_parser.addParams({color:"green", test : 1});
alert(url_parser.toString()); 
// result = "/browse/102?rpp=10&ajax=1&change=1&color=green&test=1"