获取所有查询字符串对并初始化字典的最佳方法

时间:2010-02-01 20:53:06

标签: c# asp.net

我想在我的查询字符串中存储所有键/值对:

www.example.com/?a=2&b=3&c=34

进入字典。有没有快速的方法来做这个而不必手动循环所有的项目?

2 个答案:

答案 0 :(得分:13)

尝试HttpUtility.ParseQueryString()

它会为您提供NameValueCollection个键和值。

答案 1 :(得分:0)

获取问号后找到的字符串,将字符串拆分为“&”字符。 然后,对于要返回的每个字符串,再次在'='字符上拆分。

你甚至可以为它创建一个扩展方法。

public static class StringExtensions
{

    public Dictionary<string, string> ExtractQueryStringValues( this string target )
    {

        string queryString = target.Split (target.IndexOf ('?') + 1);

        string[] keyvaluePairs = queryString.Split ('&');

        Dictionary<string, string> result = new Dictionary<string, string>();

        foreach( string pair in keyvaluePairs )
        {
             var tmp = pair.Split ('=');

             result.Add (tmp[0], tmp[1]);
        }

        return result;

    }

}

这样的事情。 请记住,它不安全,因为它不处理每个边缘情况。 (例如,给定一个在第一个问号之后没有任何内容的字符串等等),但它应该让你开始。