首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从.NET中的字符串获取URL参数

从.NET中的字符串获取URL参数
EN

Stack Overflow用户
提问于 2009-03-18 20:05:12
回答 12查看 437.3K关注 0票数 293

我在.NET中有一个字符串,它实际上是一个网址。我想要一种从特定参数中获取值的简单方法。

通常,我只使用Request.Params["theThingIWant"],但是这个字符串不是来自请求。我可以创建一个新的Uri项目,如下所示:

代码语言:javascript
复制
Uri myUri = new Uri(TheStringUrlIWantMyValueFrom);

我可以使用myUri.Query来获取查询string...but,然后显然我必须找到一些正则表达式来拆分它。

我是否遗漏了一些明显的东西,或者除了创建某种正则表达式之外,没有内置的方法来完成这项工作,等等?

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2009-03-18 20:19:58

使用返回NameValueCollectionSystem.Web.HttpUtility类的静态ParseQueryString方法。

代码语言:javascript
复制
Uri myUri = new Uri("http://www.example.com?param1=good&param2=bad");
string param1 = HttpUtility.ParseQueryString(myUri.Query).Get("param1");

请查看http://msdn.microsoft.com/en-us/library/ms150046.aspx上的文档

票数 581
EN

Stack Overflow用户

发布于 2009-03-18 20:27:24

这可能就是你想要的

代码语言:javascript
复制
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");
票数 54
EN

Stack Overflow用户

发布于 2011-09-28 01:14:56

@Andrew和@CZFox

我遇到了同样的bug,并发现原因是参数1实际上是:http://www.example.com?param1,而不是param1,这是人们所期望的。

通过删除问号前面的所有字符并包括问号,可以解决此问题。因此,实际上,HttpUtility.ParseQueryString函数只需要一个有效的查询字符串参数,该参数仅包含问号后面的字符,如下所示:

代码语言:javascript
复制
HttpUtility.ParseQueryString ( "param1=good&param2=bad" )

我的解决方法:

代码语言:javascript
复制
string RawUrl = "http://www.example.com?param1=good&param2=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" );`
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/659887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档