关于asp.net:C#的字符串替换问题

A string replacement question with C#

在Q=是固定参数的URL中,如何删除粗体字符串?

http://abc.com/qwe.aspx?Q=dieyegjgnwvpsj32ic1sy5x1zyjoztqzd9mjwl2eqj8=&;U=/foo/boo/kb

谢谢。


这很简单。我使用System.Uri类来解析URL,然后删除q查询字符串参数,然后在不使用此参数的情况下构建一个新的URL:

1
2
3
4
5
6
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=[^&]+","")将是实现这一目标的一种方法。


可能这个URL来自某个请求,这意味着您在httpRequest实例中有一个与httpContext关联的查询字符串。

在这种情况下,只需调用HttpContext.Current.Request.QueryString.Remove("q");就可以删除"q"查询字符串参数。

另一个解决办法是亚历克斯提出的。


位置是否固定?你可以做一个IndexOf("q=")IndexOf("u="),用SubString两次来拆卸零件。另一种方法是使用正则表达式。


如果q是固定参数….

1
str = str.Replace("q=DIEYeGJgNwvPSJ32ic1sY5x1ZYjOZTQZD9mjWl2EQJ8=","");

否则我会:

1
2
3
var qa = Request.QueryString;
qa.Remove("q");
var queryString = qa.ToString();