我試圖在vb中確定一個URL是絕對還是相對的。我確定必須有一些圖書館可以做到這一點,但我不確定哪一個。基本上我需要能夠分析一個字符串,如'relative/path'和or'http://www.absolutepath.com/subpage',並確定它是絕對的還是相對的。提前致謝。確定一個Url是絕對還是相對於vb
-Ben
我試圖在vb中確定一個URL是絕對還是相對的。我確定必須有一些圖書館可以做到這一點,但我不確定哪一個。基本上我需要能夠分析一個字符串,如'relative/path'和or'http://www.absolutepath.com/subpage',並確定它是絕對的還是相對的。提前致謝。確定一個Url是絕對還是相對於vb
-Ben
可以使用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
試試這個:
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;
}
如果您正在檢查URL是否會將用戶發送到其他域,則會失敗。它不處理與協議相關的URL。 System.Uri認爲'// gmail.com'是相對的,而不是絕對的。 – yzorg
Determine if Absolute or Relative URL具有簡單answer
bool IsAbsoluteUrl(string url)
{
Uri result;
return Uri.TryCreate(url, UriKind.Absolute, out result);
}
Uri.IsWellFormedUriString(url,UriKind.Absolute)也非常簡單。此外它可能更快,因爲它不是試圖創建一個新的Uri。 – Vlad
這正是我所需要的。謝謝! – Ben
如果您正在檢查URL是否會將用戶發送到其他域,則會失敗。它不處理與協議相關的URL。 System.Uri認爲'// gmail.com'是相對的,而不是絕對的。瀏覽器將採用當前的方案/協議,但System.Uri不處理這種情況。 – yzorg