鉴于您不能在 Windows 应用商店应用程序中使用名称-值对,那么合适的命名空间是什么?我想转换以下查询字符串?param1=value1¶m2=value2
我怎样才能把它塑造成:
Arrayname[param1]=value1
Arrayname[param2]=value2
鉴于您不能在 Windows 应用商店应用程序中使用名称-值对,那么合适的命名空间是什么?我想转换以下查询字符串?param1=value1¶m2=value2
我怎样才能把它塑造成:
Arrayname[param1]=value1
Arrayname[param2]=value2
我也对 Windows 应用商店应用程序(Metro C# 应用程序)无法访问包含 HttpUtility.ParseQueryString() 的 System.Web 感到失望。
感谢上面 Romoku 的建议,我能够使用 WwwFormUrlDecoder 将查询字符串转换为字典:
Uri uri = new Uri("http://example.com/?param1=value1¶m2=value2");
WwwFormUrlDecoder decoder = new WwwFormUrlDecoder(uri.Query);
Dictionary<string,string> queryParams = decoder.ToDictionary(x => x.Name, x => x.Value);
希望这可以帮助!
创建此方法来解析字符串。
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¶m2=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"];