Tôi thích ngắn gọn của Jon Canning's answer, nhưng vì lợi ích của đa dạng, đây là một sự thay thế cho câu trả lời của mình, điều đó cũng sẽ làm việc cho các môi trường hạn chế như Windows Phone 8, mà thiếu HttpUtility.ParseQueryString()
tiện ích:
public static Dictionary<string, string> ParseQueryString(String query)
{
Dictionary<String, String> queryDict = new Dictionary<string, string>();
foreach (String token in query.TrimStart(new char[] { '?' }).Split(new char[] { '&' }, StringSplitOptions.RemoveEmptyEntries))
{
string[] parts = token.Split(new char[] { '=' }, StringSplitOptions.RemoveEmptyEntries);
if (parts.Length == 2)
queryDict[parts[0].Trim()] = HttpUtility.UrlDecode(parts[1]).Trim();
else
queryDict[parts[0].Trim()] = "";
}
return queryDict;
}
trên thực tế, một sự cải thiện hữu ích cho câu trả lời Canning rằng chăm sóc giá trị url-mã hóa giải mã (như trong các giải pháp trên) là:
public static Dictionary<string, string> ParseQueryString2(String query)
{
return Regex.Matches(query, "([^?=&]+)(=([^&]*))?").Cast<Match>().ToDictionary(x => x.Groups[1].Value, x => HttpUtility.UrlDecode(x.Groups[3].Value));
}
Không có trong Silverlight :-(Sao chép/dán - ở đây tôi đi ... – mark