我在。net中有一个字符串,实际上是一个URL。我想要一种简单的方法从特定的参数中获取值。
通常,我只使用Request。Params["theThingIWant"],但是这个字符串不是来自请求。我可以像这样创建一个新的Uri项:
Uri myUri = new Uri(TheStringUrlIWantMyValueFrom);
我可以使用myUri。查询以获取查询字符串…但显然我得找个雷克斯风的方法把它分开。
我是否遗漏了一些明显的东西,或者是否没有内置的方法来创建某种类型的正则表达式,等等?
@Andrew和@CZFox
我遇到了同样的错误,并发现原因是参数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" );`