【问题标题】:Get the second level domain from a URL从 URL 获取二级域
【发布时间】:2015-04-08 23:12:17
【问题描述】:

如何从给定的 URL 获取二级域?

到目前为止我读过的所有文章都假设域至少有一个点。我需要一种方法来获取特定 URL 的顶级域。

例子:

http://www.example.com -> example.com
http://sub.example.com -> example.com
http://example.com -> example.com
http://example:1000 -> example
http://localhost:1000 -> localhost

这里的代码是我尝试过的,不适用于上述所有场景:

var uri = new Uri("http://www.example.com");
var host = uri.Host;
var p = host.LastIndexOf(".");
var domain = host.Substring(p + 1);

(Joe 的链接问题没有解决我提出这个问题的主要问题——它只考虑其中至少有一个点的域。)

【问题讨论】:

  • @Joe 链接的问题没有解决我提出这个问题的主要问题——它只考虑至少有一个点的域。
  • 恕我直言,www.example.com 的顶级域是 com
  • @vesan 你怎么称呼“示例”部分?我会重命名它。
  • @vesan 这不只是在您尊敬的意见中。它也在Wikipedia's opinion

标签: c# .net vb.net


【解决方案1】:

用途:

var uri = new Uri("http://sub.domain.com:8080");
var trimmedUri 
  = Regex.Match(uri.Host, @"\w+(\.(com|org|edu))?$", RegexOptions.IgnoreCase).Value;

【讨论】:

  • 我的错。我没有足够仔细地阅读这个问题。试试上面的调整。
  • 您是否针对所有示例输入进行了测试以确保获得预期的输出?
  • 除子域外的所有内容,它是在我上次编辑后添加的。既然我知道他也想要这些,我需要再做一次调整。
  • 完成。适用于所有测试用例。
  • @Colin 如果它以.net.biz 结尾怎么办?还是.co.uk?还是其他全球顶级域名之一?您的解决方案不是很健壮,因为它预先假定了某些 TLD。更好的方法是查看字符串的结构,而不是查看确切的内容。
猜你喜欢
  • 2014-11-14
  • 1970-01-01
  • 2011-06-22
  • 2014-02-06
  • 1970-01-01
  • 2010-09-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多