【原创】过滤Request参数
利用System.Web.HttpContext.Current.Request.Url.Query.Split方法能得到这样的字符?name=caicaihui&title=hahaha&page=1
假如我们想过滤掉其中一个参数,如过滤掉page参数,得到最终结果?name=caicaihui&title=hahaha 那怎么办呢,这里我写了三种方法让大家参考
方法一 利用数组
private string OutRequest1(string request)
{
string query = "";
string[] para = System.Web.HttpContext.Current.Request.Url.Query.Split("?&".ToCharArray());
foreach (string name in para)
{
if (!name.ToLower().Contains(request))
{
query += "&" + name;
}
}
return "?" + query.TrimStart('&');
}
{
string query = "";
string[] para = System.Web.HttpContext.Current.Request.Url.Query.Split("?&".ToCharArray());
foreach (string name in para)
{
if (!name.ToLower().Contains(request))
{
query += "&" + name;
}
}
return "?" + query.TrimStart('&');
}
调用
OutRequest1("page")
方法二 遍历Request
private string OutRequest2(string request)
{
string query = "";
foreach(string name in Request.QueryString.AllKeys)
{
if (name.ToLower() != request)
{
query += "&" + name + "=" + Request.QueryString[name];
}
}
return "?" + query.TrimStart('&');
}
{
string query = "";
foreach(string name in Request.QueryString.AllKeys)
{
if (name.ToLower() != request)
{
query += "&" + name + "=" + Request.QueryString[name];
}
}
return "?" + query.TrimStart('&');
}
调用
OutRequest2("page")
方法三 利用正则表达式
private string OutRequest3(string request)
{
return Regex.Replace(System.Web.HttpContext.Current.Request.Url.Query, request, "");
}
{
return Regex.Replace(System.Web.HttpContext.Current.Request.Url.Query, request, "");
}
调用
OutRequest3(@"[&|\?]page=\d+")
代码方面:三种方法里正则代码是最简单的,但是也是难的,其次就是方法二,容易理解
效率方面: 方法二 > 方法三 > 方法一