使用JavaScript更改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';

我想从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 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