asp.net下URL处理两个小工具方法

暗黄色的天际中像燃着一团百年都没有澌灭的野火,它肆无忌惮的吞噬着天间彩云,仿佛地狱使者受到差遣,来破坏天际的和谐。
有的时候我们要操作一个URL地址中查询参数,为了不破坏URL的原有结构,我们一般不能直接在URL的后面加&query=value,特别是我们的URL中有多个参数时,这种处理更麻烦。
下面两个小方法就是专门用来为一个URL添加一个查询参数或删除一个查询参数,这两个方法隐藏了原URL有无参数,是不是原来就有这个参数,有没有fragment(#anchor)这些细节和处理
/**////<summary>
///AddaquerytoanURL.
///iftheURLhasnotanyquery,thenappendthequerykeyandvaluetoit.
///iftheURLhassomequeries,thencheckitifexiststhequerykeyalready,replacethevalue,orappendthekeyandvalue
///iftheURLhasanyfragment,appendfragmentstotheURLend.
///</summary>
publicstaticstringSafeAddQueryToURL(stringkey,stringvalue,stringurl)
{
intfragPos=url.LastIndexOf("#");
stringfragment=string.Empty;
if(fragPos>-1)
{
fragment=url.Substring(fragPos);
url=url.Substring(0,fragPos);
}
intquerystart=url.IndexOf("?");
if(querystart<0)
{
url+="?"+key+"="+value;
}
else
{
Regexreg=newRegex(@"(?<=[&\?])"+key+@"=[^\s&#]*",RegexOptions.Compiled);
if(reg.IsMatch(url))
url=reg.Replace(url,key+"="+value);
else
url+="&"+key+"="+value;
}
returnurl+fragment;
}
/**////<summary>
///Removeaqueryfromurl
///</summary>
///<paramname="key"></param>
///<paramname="url"></param>
///<returns></returns>
publicstaticstringSafeRemoveQueryFromURL(stringkey,stringurl)
{
Regexreg=newRegex(@"[&\?]"+key+@"=[^\s&#]*&?",RegexOptions.Compiled);
returnreg.Replace(url,newMatchEvaluator(PutAwayGarbageFromURL));
}
privatestaticstringPutAwayGarbageFromURL(Matchmatch)
{
stringvalue=match.Value;
if(value.EndsWith("&"))
returnvalue.Substring(0,1);
else
returnstring.Empty;
} 测试:
strings="http://www.cnblogs.com/?a=1&b=2&c=3#tag";
WL(SafeRemoveQueryFromURL("a",s));
WL(SafeRemoveQueryFromURL("b",s));
WL(SafeRemoveQueryFromURL("c",s));
WL(SafeAddQueryToURL("d","new",s));
WL(SafeAddQueryToURL("a","newvalue",s));
//输出如下:
//http://www.cnblogs.com/?b=2&c=3#tag
//http://www.cnblogs.com/?a=1&c=3#tag
//http://www.cnblogs.com/?a=1&b=2#tag
//http://www.cnblogs.com/?a=1&b=2&c=3&d=new#tag
//http://www.cnblogs.com/?a=newvalue&b=2&c=3#tag

到此这篇关于asp.net下URL处理两个小工具方法就介绍到这了。人在什么阶段,就做那个阶段的事,说这个阶段该说的话,不要想的太多,太好。不管是理想还是梦想,都是需要地基的。只有你把这个阶段做好做完美,才会能接触到下一阶段的人,下一阶段的事,才能有个明确,真实,看得见摸得着的未来。更多相关asp.net下URL处理两个小工具方法内容请查看相关栏目,小编编辑不易,再次感谢大家的支持!

您可能有感兴趣的文章
ASP.NET轻量级MVC框架Nancy的基本用法

使用grpcui测试ASP.NET core的gRPC服务

ASP.NET Core中的对象池介绍

asp.net中MVC的处理流程详解

ASP.NET Core的日志系统介绍