2010-02-04 15 views
9

से संबंधित है, यदि मैं यूआरएल पूर्ण या सापेक्ष है तो मैं vb में निर्धारित करने की कोशिश कर रहा हूं। मुझे यकीन है कि कुछ पुस्तकालय होना चाहिए जो ऐसा कर सकता है लेकिन मुझे यकीन नहीं है कि कौन सा है। असल में मुझे 'रिश्तेदार/पथ' और 'http://www.absolutepath.com/subpage' जैसी स्ट्रिंग का विश्लेषण करने और यह निर्धारित करने की आवश्यकता है कि यह पूर्ण या सापेक्ष है या नहीं। अग्रिम में धन्यवाद।निर्धारित करें कि एक यूआरएल पूर्ण है या वीबी

बेन

उत्तर

18

आप Uri.IsWellFormedUriString विधि है, जो एक तर्क के रूप में एक UriKind लेता है, आप पूर्ण या संबंधित के लिए जाँच कर रहे हैं कि क्या निर्दिष्ट करने का उपयोग कर सकते हैं।

bool IsAbsoluteUrl(string url) { 
    if (!Uri.IsWellFormedUriString(url, UriKind.RelativeOrAbsolute)) { 
     throw new ArgumentException("URL was in an invalid format", "url"); 
    } 
    return Uri.IsWellFormedUriString(url, UriKind.Absolute); 
} 

IsAbsoluteUrl("http://www.absolutepath.com/subpage"); // true 
IsAbsoluteUrl("/subpage"); // false 
IsAbsoluteUrl("subpage"); // false 
IsAbsoluteUrl("http://www.absolutepath.com"); // true 
+0

यह वही है जो मुझे चाहिए था। धन्यवाद! – Ben

+4

यदि आप यह देखने के लिए जांच रहे हैं कि URL उपयोगकर्ता को किसी भिन्न डोमेन पर भेज देगा तो यह विफल हो जाता है। यह प्रोटोकॉल-संबंधित यूआरएल को संभाल नहीं करता है। '// gmail.com' को सापेक्ष, पूर्ण नहीं, System.Uri पर माना जाता है। ब्राउज़र वर्तमान योजना/प्रोटोकॉल मानेंगे, लेकिन System.Uri उस मामले को संभाल नहीं करता है। – yzorg

1

इस प्रयास करें:

Uri uri = new Uri("http://www.absolutepath.com/subpage"); 
Console.WriteLine(uri.IsAbsoluteUri); 

संपादित: क्या आप वाकई अच्छी तरह से गठित है कि पता नहीं कर रहे हैं, तो आप का उपयोग करने के कार्य करना चाहिए:

static bool IsAbsolute(string address, UriKind kind) 
{ 
    Uri uri = null; 
    return Uri.TryCreate(address, kind, out uri) ? 
     uri.IsAbsoluteUri : false; 
} 
+0

यदि आप यह देखने के लिए जांच कर रहे हैं कि URL उपयोगकर्ता को किसी भिन्न डोमेन पर भेज देगा तो यह विफल हो जाता है। यह प्रोटोकॉल-संबंधित यूआरएल को संभाल नहीं करता है। '// gmail.com' को सापेक्ष, पूर्ण नहीं, System.Uri पर माना जाता है। – yzorg

4

Determine if Absolute or Relative URL सरल है answer

bool IsAbsoluteUrl(string url) 
     { 
      Uri result; 
      return Uri.TryCreate(url, UriKind.Absolute, out result);     
     } 
+2

उरी.इस्वेलफॉर्मेड यूरीस्ट्रिंग (यूआरएल, उरीकिंड.एब्सोल्यूट) भी बहुत आसान है। यह शायद तेज़ है, क्योंकि यह एक नई उरी बनाने की कोशिश नहीं कर रहा है। – Vlad

संबंधित मुद्दे