首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从Uri获取单个查询参数

从Uri获取单个查询参数
EN

Stack Overflow用户
提问于 2010-05-22 02:25:22
回答 7查看 135.5K关注 0票数 127

我有一个uri字符串,比如:http://example.com/file?a=1&b=2&c=string%20param

是否有一个现有的函数可以将查询参数字符串转换为字典,方法与ASP.NET Context.Request相同。

我正在编写一个控制台应用程序,而不是web服务,所以没有Context.Request为我解析网址。

我知道我自己很容易破解查询字符串,但我宁愿使用FCL函数。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-05-08 04:02:45

使用以下命令:

代码语言:javascript
复制
string uri = ...;
string queryString = new System.Uri(uri).Query;
var queryDictionary = System.Web.HttpUtility.ParseQueryString(queryString);

Tejs的这段代码不是从URI获取查询字符串的“正确”方式:

代码语言:javascript
复制
string.Join(string.Empty, uri.Split('?').Skip(1));
票数 147
EN

Stack Overflow用户

发布于 2010-05-22 02:27:29

您可以使用:

代码语言:javascript
复制
var queryString = url.Substring(url.IndexOf('?')).Split('#')[0]
System.Web.HttpUtility.ParseQueryString(queryString)

MSDN

票数 121
EN

Stack Overflow用户

发布于 2014-02-26 23:48:23

为了一个现代的windows应用,我不得不这么做。我使用了以下代码:

代码语言:javascript
复制
public static class UriExtensions
{
    private static readonly Regex _regex = new Regex(@"[?&](\w[\w.]*)=([^?&]+)");

    public static IReadOnlyDictionary<string, string> ParseQueryString(this Uri uri)
    {
        var match = _regex.Match(uri.PathAndQuery);
        var paramaters = new Dictionary<string, string>();
        while (match.Success)
        {
            paramaters.Add(match.Groups[1].Value, match.Groups[2].Value);
            match = match.NextMatch();
        }
        return paramaters;
    }
}
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2884551

复制
相关文章

相似问题

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