使用JavaScript更改url参数字符串
我想从URL字符串中删除一些参数: 例如: 我有这样一个字符串:使用JavaScript更改url参数字符串,javascript,string,prototypejs,url-parameters,Javascript,String,Prototypejs,Url Parameters,我想从URL字符串中删除一些参数: 例如: 我有这样一个字符串: var url = '/browse/102?color=red&type=car&rpp=10&ajax=1&change=1'; var ignore = new Array("change","ajax"); 和这样的数组: var url = '/browse/102?color=red&type=car&rpp=10&ajax=1&change=1';
var url = '/browse/102?color=red&type=car&rpp=10&ajax=1&change=1';
var ignore = new Array("change","ajax");
和这样的数组:
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
实现这一点的最短和最快方法是什么?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(/[&?]$/, "");
}
var url='/browse/102?color=red&type=car&rpp=10&a=mode&ajax=1&change=1&mode&test';
var ignore=新数组(“更改”、“ajax”、“模式”、“测试”);
警报(removeParams(url,忽略));
函数removeParams(地址,参数)
{
对于(变量i=0;i
编辑:移动到像Michal B.那样的单独函数。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(/[&?]$/, "");
}
var url='/browse/102?color=red&type=car&rpp=10&a=mode&ajax=1&change=1&mode&test';
var ignore=新数组(“更改”、“ajax”、“模式”、“测试”);
警报(removeParams(url,忽略));
函数removeParams(地址,参数)
{
对于(变量i=0;i
编辑:移动到像Michal B.那样的单独函数。这里是一个这样做的函数的示例:
另外,我使用了Just_Mad的正则表达式,因为我的正则表达式有点难看;) 这里是一个函数的IDLE示例:
另外,我使用了Just_Mad的正则表达式,因为我的正则表达式有点难看;) 下面是我在应用程序中使用的一个简单实用程序,用于处理URL。 易于使用:
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"
下面是我在应用程序中使用的一个简单实用程序,用于处理URL。 易于使用:
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"
有很多方法,但正则表达式将是您的最佳选择。只需编写一个函数,使用正则表达式即可。应该只有很少的代码行。有很多方法,但正则表达式将是您的最佳选择。只需编写一个函数,使用正则表达式即可。应该只有很少几行代码。它在进程中失败('/browse/102?color=red&type=car&mode=2&rpp=10&ajax=1&change=1',[“mode]”);你说它失败是什么意思?这里有一个更新版本。Just_Mad的正则表达式删除了太多字符(尤其是&and?)。我的将不会删除它们,但它仍然应该是一个正确的url:。如果你有问题,你可以随时调整正则表达式。如果你真的想要有漂亮的URL,这里有一个快速的解决方案:我们只是对正确的结果有一点不同的看法:)它在进程中失败('/browse/102?color=red&type=car&mode=2&rpp=10&ajax=1&change=1',[“mode]”);你说它失败是什么意思?这里有一个更新版本。Just_Mad的正则表达式删除了太多字符(尤其是&and?)。我的将不会删除它们,但它仍然应该是一个正确的url:。如果你有问题,你可以随时调整正则表达式。如果你真的想要有漂亮的URL,这里有一个快速的解决方案:好吧,我们只是对正确的结果有一点不同的看法:)这很好,但我认为应该有一个小的修复。如果参数重复,则只删除一个。例如:
Example.com/index?cat10&change=1&change=0
被转换为Example.com/index?cat10&change=0
这很好,但我认为应该有一个小的修复。如果参数重复,则只删除一个。例如:Example.com/index?cat10&change=1&change=0
转换为Example.com/index?cat10&change=0