2010-02-04 13 views

cevap

18

Sen mutlak veya göreceli için kontrol ediyoruz olmadığını belirterek, bağımsız değişken olarak bir UriKind alır Uri.IsWellFormedUriString yöntemini kullanabilirsiniz.

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

Bu tam olarak ihtiyacım olan şey. Teşekkürler! – Ben

+4

URL'nin kullanıcıyı farklı bir alana gönderip gönderemeyeceğini kontrol ediyorsanız, bu başarısız olur. Protokole bağlı URL'leri işlemez. '// gmail.com', System.Uri'ye mutlak değil, göreceli olarak kabul edilir. Tarayıcılar mevcut şema/protokolü kabul eder, ancak System.Uri bu durumu ele almaz. – yzorg

1

bu deneyin:

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

Düzenleme: Adres iyi biçimli olduğundan emin değilseniz, kullanmak gerekir:

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

URL'nin kullanıcıyı farklı bir alana gönderip gönderemeyeceğini kontrol ediyorsanız, bu başarısız olur. Protokole bağlı URL'leri işlemez. '// gmail.com', System.Uri'ye mutlak değil, göreceli olarak kabul edilir. – yzorg

4

Determine if Absolute or Relative URL basit sahiptir answer

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

Uri.IsWellFormedUriString (url, UriKind.Absolute) da oldukça basittir. Ayrıca yeni bir Uri oluşturmaya çalışmadığı için muhtemelen daha hızlıdır. – Vlad

İlgili konular