【问题标题】:What's the easiest way to handle a string looking like a query string?处理看起来像查询字符串的字符串的最简单方法是什么?
【发布时间】:2013-08-24 12:45:33
【问题描述】:

注意:这不是关于Request.QueryString["parameter"]的问题。

我将得到一个看起来像查询字符串的字符串,即遵循以下模式:

String s = "alpha=&beta=something&gamma=nothing";

我会使用正则表达式,但也许其他人可以建议一种更简洁的方法来拆分并挑选所包含键的值。有什么建议吗?

最终,我需要将它们映射到 IEnum<KeyValuePair>

【问题讨论】:

    标签: c# regex query-string


    【解决方案1】:

    尝试使用HttpUtility.ParseQueryString。 来自msdn:

    // Parse the query string variables into a NameValueCollection.
    NameValueCollection qscoll = HttpUtility.ParseQueryString(querystring);
    

    http://msdn.microsoft.com/en-us/library/ms150046.aspx

    【讨论】:

    【解决方案2】:
    var pairs = s.Split("&");
    var keyvaluepairs = pairs.
                        Select(i => 
                        { 
                            var data = i.Split("="); 
                            return new KeyValuePair(data[0], data[1]); 
                        });
    

    【讨论】:

    • 我想我不清楚。对不起。我不是在寻找某种方式来解决它。我正在寻找一种非常巧妙的方法来解决它。像一个类(已经在.NET中,我不需要创建任何东西,因为我很懒,嗨),它将我的伪查询字符串映射到例如KeyValuePair 对象的字典
    • 我想这完全取决于你所说的 neat 是什么意思。无论如何,您可以从中创建扩展方法或创建某种实用程序类,它们将为您提供 IEnumerable<KeyValuePair>Dictionary 或任何您想要的。
    • 其实,现在我看到了,它你建议的一个巧妙的方法。我的立场是正确的。
    【解决方案3】:

    您可以拨打HttpUtility.ParseQueryString

    var nvc = HttpUtility.ParseQueryString(s);
    

    【讨论】:

      【解决方案4】:

      试试这个:

      Dictionary<string,string> d = s.Split('&').Select(x => x.Split('='))
           .ToDictionary(x => x[0], x => x[1]);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-03-02
        • 2012-05-31
        • 2011-05-22
        • 2020-10-05
        • 1970-01-01
        • 2014-07-01
        • 1970-01-01
        相关资源
        最近更新 更多