2010-02-01 22 views

Trả lời

13

Hãy thử HttpUtility.ParseQueryString().

Nó cung cấp cho bạn trở lại NameValueCollection khóa và giá trị của bạn.

+0

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). –

+0

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

+2

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

0

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.

Các vấn đề liên quan