我有一个网址,如 localhost:8001 /?page = categories& catid = 4& p = 1888& country = 1,2,3,6 ,我想删除& p = 1888年有正则表达的部分。我怎样才能匹配&用asp.net c#?
排除这部分修改 这是我为解决方案创建的功能:
public string RemoveUrlParameters(HttpContext Context, string[] Parameters)
{
string result = String.Empty;
UriBuilder urlBuilder = new UriBuilder(Context.Request.Url.AbsoluteUri);
var values = HttpUtility.ParseQueryString(urlBuilder.Query);
for (int i = 0; i < Parameters.Length; i++)
values.Remove(Parameters[i]);
urlBuilder.Query = values.ToString();
result = urlBuilder.ToString();
result = Context.Server.UrlDecode(
result.Replace("http://" + Context.Request.Url.Authority, String.Empty)
.Replace(":80", String.Empty).Replace("default.aspx", String.Empty));
return result;
}
答案 0 :(得分:9)
我想删除带有正则表达式的&amp; p = 1888部分
我建议你使用url解析器,以避免代码的脆弱性,并保证它对100%的任何有效url都有效,因为它们尊重RFC:
var url = "http://localhost:8001/?page=categories&catid=4&p=1888&country=1,2,3,6";
var urlBuilder = new UriBuilder(url);
var values = HttpUtility.ParseQueryString(urlBuilder.Query);
values.Remove("p");
urlBuilder.Query = values.ToString();
var newUrl = urlBuilder.ToString();
使用Regex实现有效的URL解析器可能非常具有挑战性并且不值得,尤其是当.NET框架已经为您提供操作URL的工具时。
答案 1 :(得分:0)
Regex.Replace(input, @"&p=1888(?=&|$)", string.Empty)