我想从 URL 字符串中删除一些参数:
例如:
我有一个这样的字符串:
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
实现这一目标的最短和最快的方法是什么?
我想从 URL 字符串中删除一些参数:
例如:
我有一个这样的字符串:
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
实现这一目标的最短和最快的方法是什么?
正则表达式呢?这是一个示例函数:
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. 那样的单独功能。
这里 jsfiddle 执行此操作的函数示例:http: //jsfiddle.net/ANGsJ/1/
PS。我使用了 Just_Mad 的正则表达式,因为我的有点丑;)
这是我在我的应用程序中使用的一个简单的实用程序来处理 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"