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

时间:2021-05-28

有的时候我们要操作一个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:///?a=newvalue&b=2&c=3#tag

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章