我在.NET中有一个字符串,它实际上是一个网址。我想要一种从特定参数中获取值的简单方法。
通常,我只使用Request.Params["theThingIWant"]
,但是这个字符串不是来自请求。我可以创建一个新的Uri
项目,如下所示:
Uri myUri = new Uri(TheStringUrlIWantMyValueFrom);
我可以使用myUri.Query
来获取查询string...but,然后显然我必须找到一些正则表达式来拆分它。
我是否遗漏了一些明显的东西,或者除了创建某种正则表达式之外,没有内置的方法来完成这项工作,等等?
发布于 2009-03-18 20:19:58
使用返回NameValueCollection
的System.Web.HttpUtility
类的静态ParseQueryString
方法。
Uri myUri = new Uri("http://www.example.com?param1=good¶m2=bad");
string param1 = HttpUtility.ParseQueryString(myUri.Query).Get("param1");
请查看http://msdn.microsoft.com/en-us/library/ms150046.aspx上的文档
发布于 2009-03-18 20:27:24
这可能就是你想要的
var uri = new Uri("http://domain.test/Default.aspx?var1=true&var2=test&var3=3");
var query = HttpUtility.ParseQueryString(uri.Query);
var var2 = query.Get("var2");
发布于 2011-09-28 01:14:56
@Andrew和@CZFox
我遇到了同样的bug,并发现原因是参数1实际上是:http://www.example.com?param1
,而不是param1
,这是人们所期望的。
通过删除问号前面的所有字符并包括问号,可以解决此问题。因此,实际上,HttpUtility.ParseQueryString
函数只需要一个有效的查询字符串参数,该参数仅包含问号后面的字符,如下所示:
HttpUtility.ParseQueryString ( "param1=good¶m2=bad" )
我的解决方法:
string RawUrl = "http://www.example.com?param1=good¶m2=bad";
int index = RawUrl.IndexOf ( "?" );
if ( index > 0 )
RawUrl = RawUrl.Substring ( index ).Remove ( 0, 1 );
Uri myUri = new Uri( RawUrl, UriKind.RelativeOrAbsolute);
string param1 = HttpUtility.ParseQueryString( myUri.Query ).Get( "param1" );`
https://stackoverflow.com/questions/659887
复制相似问题