asp.net下URL处理两个小工具方法_asp.net教程-查字典教程网
asp.net下URL处理两个小工具方法
asp.net下URL处理两个小工具方法
发布时间:2016-12-29 来源:查字典编辑
摘要:有的时候我们要操作一个URL地址中查询参数,为了不破坏URL的原有结构,我们一般不能直接在URL的后面加&query=value,特别是我们...

有的时候我们要操作一个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教程学习
    热门asp.net教程学习
    编程开发子分类