2011-09-28 14 views
159

Uri.IsWellFormedUriString और Uri.TryCreate तरीकों रहे हैं, लेकिन मैं कैसे पता चलेगा एक स्ट्रिंग एक वैध (जरूरी सक्रिय नहीं) का उपयोग नहीं इनपुट सत्यापन उद्देश्यों के लिए यूआरएल है कि क्या वे फ़ाइल पथ आदियह जांचने के लिए कि कोई स्ट्रिंग मान्य HTTP यूआरएल है या नहीं?

के लिए true वापस जाने के लिए लगता है?

उत्तर

291

इस प्रयास करें मान्य करने के लिए HTTP URL को (uriName यूआरआई है आप परीक्षण करना चाहते)

Uri uriResult; 
bool result = Uri.TryCreate(uriName, UriKind.Absolute, out uriResult) 
    && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps); 
+6

इस uriResult.Scheme बजाय uriName.Scheme पढ़ा जाना चाहिए? मैं TryCreate पर अधिभार का उपयोग कर रहा हूं जो उरी के बजाय स्ट्रिंग लेता है क्योंकि यह पहला पैरामीटर है। –

+7

आप uriResult.Scheme == ... विशेष रूप से https में अधिक स्थितियां जोड़ना चाह सकते हैं। यह इस बात पर निर्भर करता है कि आपको इसके लिए क्या चाहिए, लेकिन यह छोटा बदलाव मेरे लिए पूरी तरह से काम करने के लिए आवश्यक था। – Fiarr

+8

प्रति @ Fiarr की टिप्पणी को स्पष्ट करने के लिए, HTTP URL के अतिरिक्त HTTPS के लिए "छोटे बदलाव" की आवश्यकता है: 'bool result = Uri.TryCreate (uriName, UriKind.Absolute, out uriResult) && uriResult.Scheme == उरी UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps; ' – J0e3gan

4

Uri.TryCreate के बाद आप यह देखने के लिए Uri.Scheme देख सकते हैं कि यह HTTP है या नहीं। यदि आप दोनों HTTP और HTTPS URL मान्य के रूप में (J0e3gan की टिप्पणी के अनुसार) को स्वीकार करना चाहते

Uri uriResult; 
bool result = Uri.TryCreate(uriName, UriKind.Absolute, out uriResult) 
    && uriResult.Scheme == Uri.UriSchemeHttp; 

या,:

0

यह वापसी होगी bool:

Uri.IsWellFormedUriString(a.GetAttribute("href"), UriKind.Absolute) 
+1

मुझे लगता है कि ओपी ने विशेष रूप से उल्लेख किया है, वह Uri.IsWellFormedUriString पसंद नहीं करता क्योंकि यह फ़ाइल पथों के लिए सच है। क्या आपके पास इस समस्या का समाधान है? – Isantipov

0
Uri uri = null; 
if (!Uri.TryCreate(url, UriKind.Absolute, out uri) || null == uri) 
    return false; 
else 
    return true; 

यहां url वह स्ट्रिंग है जिसे आप परीक्षण करना चाहते हैं।

14
public static bool CheckURLValid(this string source) 
    { 
     Uri uriResult; 
     return Uri.TryCreate(source, UriKind.Absolute, out uriResult) && uriResult.Scheme == Uri.UriSchemeHttp; 
    } 

उपयोग:

string url = "htts://adasd.xc."; 
if(url.CheckUrlValid()) 
{ 
    //valid process 
} 
+0

यह www यूआरएल को संभालने के लिए प्रतीत नहीं होता है। आईई: www.google.com अवैध के रूप में दिखाया गया है। –

+4

@ZauberParacelsus "www.google.com" अमान्य है। यूआरएल का अर्थ "http", "ftp", "file" आदि से शुरू होना चाहिए। स्ट्रिंग –

53

इस विधि http और https दोनों में ठीक काम करता है। बस एक लाइन :)

if (Uri.IsWellFormedUriString("https://www.google.com", UriKind.Absolute)) 

MSDN: IsWellFormedUriString

+4

के बिना स्ट्रिंग "http: // www.google.com" होनी चाहिए यह गैर-HTTP यूआरआई (यानी [किसी अन्य योजना के लिए) ] (https://msdn.microsoft.com/en-us/library/system.uri.scheme (v = vs.110) .aspx) जैसे कि 'file: // 'या' ldap: // ' इस समाधान को योजना के खिलाफ एक चेक के साथ जोड़ा जाना चाहिए - उदाहरण के लिए 'अगर (uri.Scheme! = Uri.UriSchemeHttp && uri.Scheme! = Uri.UriSchemeHttps) ... ' – Squiggle

+4

यहां 17 परीक्षण विफल: https: // dotnetfiddle। शुद्ध/XduN3A – Lee

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

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