首页 新闻 会员 周边 捐助

如何根据参数名移除url中的参数?

1
悬赏园豆:10 [已解决问题] 解决于 2011-04-07 13:44

如果url:
www.qq.com?name=456
移除后变为:www.qq.com
www.qq.com?id=123&name=456
移除后变为:www.qq.com?id=123
www.qq.com?id=123&name=456&value=789
移除后变为:www.qq.com?id=123&value=789
这个功能该怎么实现?

问题补充: 能用js来实现吗
天亦玄的主页 天亦玄 | 初学一级 | 园豆:31
提问于:2010-12-29 10:46
< >
分享
最佳答案
1

js操作url参数,直接拿去用吧.

 

function getQueStr(url, ref) //取获参数值
{
var str = url.substr(url.indexOf('?') + 1);
if (str.indexOf('&') != -1) {
var arr = str.split('&');
for (i in arr) {
if (arr[i].split('=')[0] == ref)
return arr[i].split('=')[1];
}
}
else {
return url.substr(url.indexOf('=') + 1)
}
}

function setQueStr(url, ref, value) //设置参数值
{
var str = "";
if (url.indexOf('?') != -1)
str
= url.substr(url.indexOf('?') + 1);
else
return url + "?" + ref + "=" + value;
var returnurl = "";
var setparam = "";
var arr;
var modify = "0";

if (str.indexOf('&') != -1) {
arr
= str.split('&');

for (i in arr) {
if (arr[i].split('=')[0] == ref) {
setparam
= value;
modify
= "1";
}
else {
setparam
= arr[i].split('=')[1];
}
returnurl
= returnurl + arr[i].split('=')[0] + "=" + setparam + "&";
}

returnurl
= returnurl.substr(0, returnurl.length - 1);

if (modify == "0")
if (returnurl == str)
returnurl
= returnurl + "&" + ref + "=" + value;
}
else {
if (str.indexOf('=') != -1) {
arr
= str.split('=');

if (arr[0] == ref) {
setparam
= value;
modify
= "1";
}
else {
setparam
= arr[1];
}
returnurl
= arr[0] + "=" + setparam;
if (modify == "0")
if (returnurl == str)
returnurl
= returnurl + "&" + ref + "=" + value;
}
else
returnurl
= ref + "=" + value;
}
return url.substr(0, url.indexOf('?')) + "?" + returnurl;
}

function delQueStr(url, ref) //删除参数值
{
var str = "";

if (url.indexOf('?') != -1)
str
= url.substr(url.indexOf('?') + 1);
else
return url;
var arr = "";
var returnurl = "";
var setparam = "";
if (str.indexOf('&') != -1) {
arr
= str.split('&');
for (i in arr) {
if (arr[i].split('=')[0] != ref) {
returnurl
= returnurl + arr[i].split('=')[0] + "=" + arr[i].split('=')[1] + "&";
}
}
return url.substr(0, url.indexOf('?')) + "?" + returnurl.substr(0, returnurl.length - 1);
}
else {
arr
= str.split('=');
if (arr[0] == ref)
return url.substr(0, url.indexOf('?'));
else
return url;
}
}
收获园豆:10
三桂 | 老鸟四级 |园豆:3565 | 2010-12-30 23:10
其他回答(2)
0

s = Regex.Replace(s, @"&?name=[^&]+", String.Empty).TrimEnd('?');

Gray Zhang | 园豆:17610 (专家六级) | 2010-12-29 11:01
0

/// <summary>
        /// 功能:清除Url中的参数
        /// </summary>
        /// <param name="url">链接地址</param>
        /// <param name="paraName">参数名</param>
        /// <returns>替换后的链接地址</returns>
        public string TrimPara(string url,string paraName)
        {
            string str = Request.Url.AbsoluteUri;
            //使用正则匹配所要查找的Key
            Regex reg = new Regex(string.Format("{0}=[^&]*", "a"), RegexOptions.IgnoreCase);
            Regex reg1 = new Regex("[&]{2,}", RegexOptions.IgnoreCase);
            //将旧值替换为空
            string newUrl = reg.Replace(str, "");

            //将新值替换到Url中
            newUrl = reg1.Replace(newUrl, "&");
            //将多余的&字符清除
            return newUrl.Replace("?&", "?");
        }

莫文 | 园豆:122 (初学一级) | 2010-12-30 19:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册