Nhận chuỗi được tìm thấy sau dấu chấm hỏi, chia chuỗi trên ký tự '&'. Sau đó, đối với mỗi chuỗi đang được trả về, hãy chia nhỏ lại thành ký tự '='.
Bạn thậm chí có thể tạo phương thức tiện ích mở rộng cho nó.
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;
}
}
Điều gì đó tương tự. Hãy nhớ rằng, nó không an toàn, vì nó không xử lý từng trường hợp cạnh. (Ví dụ, đưa ra một chuỗi mà không có gì sau dấu hỏi đầu tiên, vv ...), nhưng nó sẽ giúp bạn bắt đầu.
Nguồn
2010-02-01 20:55:23
Tốt, tôi không biết về HttpUtility. (Nhưng tôi nghĩ rằng đó là bởi vì nó trong System.Web, một không gian tên mà tôi không quen thuộc với). –
Ngoài ra, bạn có thể sử dụng NameValueCollectionExtensions.CopyTo (NameValueCollection, IDictionary << string, object >>) để nhận được một IDictionary "thực". – JohannesH
Blah ... Một dấu "lớn hơn" trong các bình luận không hoạt động. Nhận xét về SO cần một số cải tiến. – JohannesH