【发布时间】:2011-04-15 13:03:57
【问题描述】:
如何在 q= 是固定参数的以下网址中删除 bold 中的字符串?
http://abc.com/qwe.aspx?q=DIEYeGJgNwvPSJ32ic1sY5x1ZYjOZTQZD9mjWl2EQJ8=&u=/foo/boo/kb
谢谢。
【问题讨论】:
如何在 q= 是固定参数的以下网址中删除 bold 中的字符串?
http://abc.com/qwe.aspx?q=DIEYeGJgNwvPSJ32ic1sY5x1ZYjOZTQZD9mjWl2EQJ8=&u=/foo/boo/kb
谢谢。
【问题讨论】:
这很简单。我使用System.Uri类解析url,然后去掉q查询字符串参数,然后新建一个不带这个参数的url:
var url = new Uri("http://abc.com/qwe.aspx?q=DIEYeGJgNwvPSJ32ic1sY5x1ZYjOZTQZD9mjWl2EQJ8=&u=/foo/boo/kb");
var query = HttpUtility.ParseQueryString(url.Query);
query.Remove("q");
UriBuilder ub = new UriBuilder(url);
ub.Query = query.ToString();
var result = ub.Uri.ToString();
现在result 持有价值:http://abc.com/qwe.aspx?u=/foo/boo/kb。
【讨论】:
input = Regex.Replace(input, "q=[^&]+", "") 是一种方法。
【讨论】:
q= 部分不会阻止这种情况吗?
[?&] 添加一个后视功能。
位置是固定的吗?您可以使用IndexOf("q=") 和IndexOf("u=") 并使用SubString 两次来删除该部分。另一种方法是使用正则表达式。
【讨论】:
也许这个 URL 来自某个请求,这意味着您在 HttpRequest 实例中拥有与 HttpContext 关联的查询字符串。
在这种情况下,您始终可以通过调用HttpContext.Current.Request.QueryString.Remove("q"); 来删除“q”查询字符串参数
另一个解决方案是 Alex 建议的解决方案。
【讨论】:
如果Q是一个固定参数......
str = str.Replace("q=DIEYeGJgNwvPSJ32ic1sY5x1ZYjOZTQZD9mjWl2EQJ8=", "");
否则我会这样做:
var qa = Request.QueryString;
qa.Remove("q");
var queryString = qa.ToString();
【讨论】:
q= is fixed parameter这让我觉得参数没有改变。