2013-08-20 5 views
7

की तुलना करने का सबसे अच्छा तरीका मैं 2 यूआरएल की तुलना करना चाहता हूं। ऐसा करने का सबसे अच्छा तरीका क्या है?2 यूआरएल

शर्तें: 1) इसे http योजना को बाहर करना चाहिए। 2) 'foo.com/a/b' और 'foo.com/a' एक मैच होना चाहिए।

+0

मैंने Google खोज की थी। लेकिन इसे करने का कोई अच्छा तरीका नहीं मिला – hegdesachin

+0

@hegdesachin यूआरएल की कोशिश करने और तुलना करने के लिए आपको पहला व्यक्ति होना चाहिए। पहले परिणाम को छोड़कर, Google पर कोई अच्छा तरीका नहीं: [link] (http://msdn.microsoft.com/en-us/library/system.uri.compare.aspx) – Artless

+0

इसे "ए" की आवाज़ से। इसमें शामिल हैं ("बी") ' – Sayse

उत्तर

0

यह पता है कि आप वास्तव में "मैच" यहाँ मतलब मुश्किल है का उपयोग के बाद से आप केवल एक उदाहरण दिया। इस मामले में आप ऐसा कुछ कर सकते हैं।

bool UrlsMatch(string first, string second) 
{ 
    return !(first.ToLower().StartsWith("http://")) && first.ToLower().StartsWith(second.ToLower()); 
} 

हालांकि आप उन्हें अन्य तरीकों से भी देखना चाहते हैं।

आप उरी.कंपारे का भी उपयोग कर सकते हैं, लेकिन समानता के लिए आपकी सटीक आवश्यकताओं को जानने के बिना यह जानना मुश्किल होगा कि यह पूरी तरह उपयुक्त है या नहीं।

1

अगर मैं समझता हूँ कि आप इस

bool Compare(string url1, string url2) 
    { 
     var str1 = url1.Replace("http://", String.Empty).ToLower(); 
     var str2 = url2.Replace("http://", String.Empty).ToLower(); 

     return (str1.Contains(str2) || str2.Contains(str1)); 
    } 
+0

है, तो आप अपने पैरामीटर को वापस कर सकते हैं, 'प्रतिस्थापन' भी एक नई स्ट्रिंग देता है और मौजूदा एक – Sayse

+0

को सही नहीं करता है। फिक्स्ड! – sevdalone

20

आप Uri.Compare विधि का उपयोग करना चाहिए की तरह कुछ हो सकता है तो यह करने के लिए एक समारोह पूरा करने के लिए कोशिश कर रहे हैं।

यहां दो यूआरआई की विभिन्न योजनाओं की तुलना करने के लिए एक उदाहरण दिया गया है।

public static void Test() 
{ 
    Uri uri1 = new Uri("http://www.foo.com/baz?bar=1"); 
    Uri uri2 = new Uri("https://www.foo.com/BAZ?bar=1"); 

    var result = Uri.Compare(uri1, uri2, 
     UriComponents.Host | UriComponents.PathAndQuery, 
     UriFormat.SafeUnescaped, StringComparison.OrdinalIgnoreCase); 

    Debug.Assert(result == 0); 
} 
संबंधित मुद्दे