प्रश्न चिह्न के बाद मिली स्ट्रिंग प्राप्त करें, '&' वर्ण पर स्ट्रिंग को विभाजित करें। फिर, प्रत्येक स्ट्रिंग को वापस करने के लिए, '=' वर्ण पर दोबारा विभाजित करें।
आप इसके लिए एक विस्तार विधि भी बना सकते हैं।
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;
}
}
ऐसा कुछ। याद रखें, यह सुरक्षित नहीं है, क्योंकि यह प्रत्येक एज-केस को संभाल नहीं करता है। (उदाहरण के लिए, एक स्ट्रिंग दी गई जिसमें पहले प्रश्न चिह्न आदि के बाद कुछ भी नहीं है ...), लेकिन यह आपको शुरू करना चाहिए।
स्रोत
2010-02-01 20:55:23
अच्छा, मुझे HttpUtility के बारे में पता नहीं था। (लेकिन मुझे लगता है कि ऐसा इसलिए है क्योंकि यह System.Web में है, एक नामस्थान जिसे मैं इतना परिचित नहीं हूं)। –
इसके अलावा आप "असली" IDictionary प्राप्त करने के लिए NameValueCollectionExtensions.CopyTo (यह नाम ValueCollection, IDictionary << string, object >>) का उपयोग कर सकते हैं। – JohannesH
ब्ला ... टिप्पणियों में एक "बड़ा से अधिक" साइन काम नहीं करता है। एसओ पर टिप्पणियों में कुछ सुधार की जरूरत है। – JohannesH