0

鉴于您不能在 Windows 应用商店应用程序中使用名称-值对,那么合适的命名空间是什么?我想转换以下查询字符串?param1=value1&param2=value2

我怎样才能把它塑造成:

Arrayname[param1]=value1

Arrayname[param2]=value2

4

2 回答 2

0

我也对 Windows 应用商店应用程序(Metro C# 应用程序)无法访问包含 HttpUtility.ParseQueryString() 的 System.Web 感到失望。

感谢上面 Romoku 的建议,我能够使用 WwwFormUrlDecoder 将查询字符串转换为字典:

Uri uri = new Uri("http://example.com/?param1=value1&param2=value2");
WwwFormUrlDecoder decoder = new WwwFormUrlDecoder(uri.Query);
Dictionary<string,string> queryParams = decoder.ToDictionary(x => x.Name, x => x.Value);

希望这可以帮助!

于 2014-02-12T23:56:46.140 回答
0

创建此方法来解析字符串。

public Dictionary<string, string> GetDelimitedValues(string candidateString,
                                                         char pairDelimeter,
                                                         char valueDelimiter)
    {
      var nameValueStrings = candidateString.Split(new char[] { pairDelimeter },
                                        StringSplitOptions.RemoveEmptyEntries);
      var splitPairs = nameValueStrings.Select(item =>
                                               item.Split(new char[] { valueDelimiter },
                                                          StringSplitOptions.RemoveEmptyEntries));

      var keyValuePairs = splitPairs.Select(x =>
                                             new KeyValuePair<string, string>(x[0],
                                              x.Length > 1 ? x[1] : string.Empty));

      return keyValuePairs.ToDictionary(x => x.Key, x => x.Value);
    }

像下面的例子一样调用方法。

  string urlEnd = "?param1=value1&param2=value2&color=blue&size=m";
  urlEnd = urlEnd.TrimStart('?');

  var results = GetDelimitedValues(urlEnd, '&', '=');

  // get an item from dictionary
  var colorString = results["color"];
  var sizeString = results["size"];
于 2013-05-08T01:02:42.857 回答