[c#] उरी से अलग प्रश्न पैरामीटर प्राप्त करें



Answers

आप उपयोग कर सकते हैं:

var queryString = url.Substring(url.IndexOf('?')).Split('#')[0]
System.Web.HttpUtility.ParseQueryString(queryString)

MSDN

Question

इस प्रश्न का उत्तर यहां दिया गया है:

मेरे पास एक यूरी स्ट्रिंग है: http://example.com/file?a=1&b=2&c=string%20param

क्या कोई मौजूदा फ़ंक्शन है जो क्वेरी पैरामीटर स्ट्रिंग को एक शब्दकोश में एएसपी.NET संदर्भ के रूप में परिवर्तित करेगा। अनुरोध करता है।

मैं एक कंसोल ऐप लिख रहा हूं, न कि वेब-सेवा, इसलिए कोई संदर्भ नहीं है। मेरे लिए यूआरएल पार्स करने के लिए अनुरोध करें।

मुझे पता है कि क्वेरी स्ट्रिंग को खुद को क्रैक करना बहुत आसान है, लेकिन यदि मैं मौजूद हूं तो मैं एक एफसीएल फ़ंक्शन का उपयोग करना चाहता हूं।




मुझे इसे आधुनिक विंडोज ऐप के लिए करना था। मैंने निम्नलिखित का उपयोग किया:

public static class UriExtensions
{
    private static readonly Regex _regex = new Regex(@"[?&](\w[\w.]*)=([^?&]+)");

    public static IReadOnlyDictionary<string, string> ParseQueryString(this Uri uri)
    {
        var match = _regex.Match(uri.PathAndQuery);
        var paramaters = new Dictionary<string, string>();
        while (match.Success)
        {
            paramaters.Add(match.Groups[1].Value, match.Groups[2].Value);
            match = match.NextMatch();
        }
        return paramaters;
    }
}






आप अपने कंसोल एप्लिकेशन में System.Web का संदर्भ दे सकते हैं और फिर यूटिलिटी फ़ंक्शंस को विभाजित करने वाले उपयोगिता फ़ंक्शंस को देख सकते हैं।




पृथक परियोजनाओं के लिए, जहां निर्भरता न्यूनतम रखी जानी चाहिए, मैंने खुद को इस कार्यान्वयन का उपयोग करके पाया:

var arguments = uri.Query
  .Substring(1) // Remove '?'
  .Split('&')
  .Select(q => q.Split('='))
  .ToDictionary(q => q.FirstOrDefault(), q => q.Skip(1).FirstOrDefault());

हालांकि, ध्यान दें कि, मैं किसी भी तरह के एन्कोडेड तारों को संभाल नहीं पा रहा हूं, क्योंकि मैं इसे नियंत्रित वातावरण में उपयोग कर रहा था, जहां एन्कोडिंग समस्या सर्वर पक्ष पर एक कोडिंग त्रुटि होगी जिसे ठीक किया जाना चाहिए।






Related



Tags

c# c#   .net .net   uri