例如:
http://www.google.co.uk
www.google.co.uk
google.co.uk
将全部转换为:
google.co.uk
我本来想使用 System.Uri 类,但这似乎只接受带有方案的 url。
该类UriBuilder
规范化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
由注册商google.co.uk
管理,由谷歌管理。
为了让您了解这个问题,这里有一个不完整的域后缀列表,到目前为止包括近 7100 个条目。值得注意的是,哪个部分甚至不一致:
URL你想要的域 --------------------------------- ----- http://www.crews.aero 船员.aero http://www.crew.aero www.crew.aero
最好的方法是谷歌自己为 Chrome 的 omnibar 所做的:获取(不完整的)域后缀列表,临时缓存它,并将域名与域后缀列表进行比较。您可以自己查看结果:在 Chrome 多功能栏中输入“crews.aero”,它将被视为 URL,或输入“crew.aero”,它将被视为搜索。
尝试使用此代码
var url = "";
if (! url.Contains("://"))
{
Url = "http://" + url;
}
var result = new Uri(url).Host;