例如:
http://www.google.co.uk
www.google.co.uk
google.co.uk
将全部转换为:
google.co.uk
我本来希望使用System.Uri类,但这似乎只接受带有方案的网址。
答案 0 :(得分:6)
UriBuilder
class规范化URL并处理许多边缘情况,例如缺少方案。这样可以轻松提取域名。例如,这些都会为您提供www.google.co.uk
:
new UriBuilder("www.google.co.uk").Host
new UriBuilder("http://www.google.co.uk").Host
new UriBuilder("ftp://www.google.co.uk:21/some/path").Host
www.
很难问题似乎很容易,但事实并非如此。您无法可靠地删除www
等子域,因为没有真正的区别。域是 www.google.co.uk
,包括www
。 co.uk
使google
成为域的一部分且www
不属于域 - 没有什么特别之处 - co.uk
由注册商管理,而{{1}由Google管理。
为了让您了解问题,这里有incomplete list of domain suffixes,其中包含近7100个条目。值得注意的是,哪一部分甚至不一致:
URL the domain you want --------------------- ------------------- http://www.crews.aero crews.aero http://www.crew.aero www.crew.aero
最好的方法是what Google itself does for Chrome's omnibar:获取(incomplete) list of domain suffixes,暂时缓存它,并将域名与域后缀列表进行比较。您可以自己查看结果:在Chrome omnibar中键入“crews.aero”,它将被视为URL,或者键入“crew.aero”,它将被视为搜索。
答案 1 :(得分:0)
尝试使用此代码
var url = "";
if (! url.Contains("://"))
{
Url = "http://" + url;
}
var result = new Uri(url).Host;