आप कैसे जांचते हैं कि एक उड़ी स्ट्रिंग वैध है (कि आप इसे उरी कंस्ट्रक्टर को खिला सकते हैं)?
अब तक मेरे पास केवल निम्नलिखित हैं, लेकिन स्पष्ट कारणों से मैं कम क्रूर तरीका पसंद करूंगा:
Boolean IsValidUri(String uri)
{
try
{
new Uri(uri);
return true;
}
catch
{
return false;
}
}
मैंने Uri.IsWellFormedUriString की कोशिश की, लेकिन यह सब कुछ पसंद नहीं है जिसे आप कंस्ट्रक्टर पर फेंक सकते हैं। उदाहरण के लिए:
String test = @"C:\File.txt";
Console.WriteLine("Uri.IsWellFormedUriString says: {0}", Uri.IsWellFormedUriString(test, UriKind.RelativeOrAbsolute));
Console.WriteLine("IsValidUri says: {0}", IsValidUri(test));
उत्पादन होगा:
Uri.IsWellFormedUriString says: False
IsValidUri says: True
अपडेट / जवाब
Uri कंस्ट्रक्टर डिफ़ॉल्ट रूप से पूर्ण निरपेक्ष का उपयोग करता है। यह एक विसंगति पैदा कर रहा था जब मैंने Uri.TryCreate और कंस्ट्रक्टर का उपयोग करने की कोशिश की। यदि आप निर्माणकर्ता और TryCreate दोनों के लिए UriKind से मेल खाते हैं, तो आपको अपेक्षित परिणाम मिलता है।