如何在加粗内删除字符串,其中q =是固定参数?C#的字符串替换问题
http://abc.com/qwe.aspx? Q = DIEYeGJgNwvPSJ32ic1sY5x1ZYjOZTQZD9mjWl2EQJ8 = & U = /富/ BOO/kb的
感谢。
如何在加粗内删除字符串,其中q =是固定参数?C#的字符串替换问题
http://abc.com/qwe.aspx? Q = DIEYeGJgNwvPSJ32ic1sY5x1ZYjOZTQZD9mjWl2EQJ8 = & U = /富/ 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
。
如果Q是一个固定的参数....
str = str.Replace("q=DIEYeGJgNwvPSJ32ic1sY5x1ZYjOZTQZD9mjWl2EQJ8=", "");
否则我会做:
var qa = Request.QueryString;
qa.Remove("q");
var queryString = qa.ToString();
这没有帮助 - 参数*名称*是固定的,不是它的值! – 2011-04-15 13:08:48
他说这是固定的。无论如何,我添加了我会为变量值查询字符串做的事情。 – tster 2011-04-15 13:10:23
参数名称是固定的,而不是** q = **之后的字符串! – 2011-04-15 13:11:22
input = Regex.Replace(input, "q=[^&]+", "")
将做这件事。
你需要小心一点,因为像“uq = something”这样的参数将被无意中删除。 – 2011-04-15 13:10:39
不会,“q =”不会匹配“qu =”。 – Antoine 2011-04-15 13:12:08
@Marius,是不是正则表达式的'q ='部分阻止? – 2011-04-15 13:12:18
这些位置是否固定?您可以做一个IndexOf("q=")
和IndexOf("u=")
并使用SubString
两次删除零件。另一种方法是使用正则表达式。
也许这个URL来自一些请求,这意味着你在HttpRequest实例中有与HttpContext关联的查询字符串。
在这种情况下,你永远可以通过调用HttpContext.Current.Request.QueryString.Remove("q");
另一种解决方案将是一个由Alex建议删除“Q”查询字符串参数。
+1,我认为这是最干净和最安全的解决方案! – 2011-04-15 13:14:16
这应该是删除查询参数最安全的方法。 – Zebi 2011-04-15 13:15:02
太多的代码来做一件简单的事情。如果问题是那个URL是HttpRequest中找到的那个,那么这可能是一个矫枉过正的问题。我将投票给正则表达式解决方案。 – 2011-04-15 13:18:13