4

例如:

http://www.google.co.uk
www.google.co.uk
google.co.uk

将全部转换为:

google.co.uk

我本来想使用 System.Uri 类,但这似乎只接受带有方案的 url。

4

2 回答 2

9

提取域名很容易

该类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”,它将被视为搜索。

于 2015-01-30T20:47:02.680 回答
0

尝试使用此代码

var url = "";
if (! url.Contains("://"))
{
        Url = "http://" + url;
}

var result = new Uri(url).Host;
于 2012-07-06T13:52:57.100 回答