我需要从任何网址提取准确的域名。
例如,
网址:http://www.google.com -->域名: google.com
网址:http://www.google.co.uk/path1/path2 -->域名: google.co.uk
这在c#中是如何实现的呢?是否有针对该任务的完整TLD列表或解析器?
发布于 2011-05-13 04:57:50
您可以使用Uri Class访问URI的所有组件:
var uri = new Uri("http://www.google.co.uk/path1/path2");
var host = uri.Host;
// host == "www.google.co.uk"然而,没有内置的方法可以将子域"www“从"www.google.co.uk”中剥离。你需要实现你自己的逻辑,例如
var parts = host.ToLowerInvariant().Split('.');
if (parts.Length >= 3 &&
parts[parts.Length - 1] == "uk" &&
parts[parts.Length - 2] == "co")
{
var result = parts[parts.Length - 3] + ".co.uk";
// result == "google.co.uk"
}发布于 2012-12-07 18:57:17
使用:
new Uri("http://www.stackoverflow.com/questions/5984361/c-sharp-getting-exact-domain-name-from-any-url?s=45faab89-43eb-41dc-aa5b-8a93f2eaeb74#new-answer").GetLeftPart(UriPartial.Authority).Replace("/www.", "/").Replace("http://", ""));输入:
http://www.stackoverflow.com/questions/5984361/c-sharp-getting-exact-domain-name-from-any-url?s=45faab89-43eb-41dc-aa5b-8a93f2eaeb74#new-answer输出:
stackoverflow.com也适用于以下情况。
http://www.google.com→google.com
http://www.google.co.uk/path1/path2→google.co.uk
http://localhost.intranet:88/path1/path2→localhost.intranet:88
http://www2.google.com→www2.google.com
发布于 2011-05-13 04:57:53
尝试System.Uri类。
http://msdn.microsoft.com/en-us/library/system.uri.aspx
new Uri("http://www.google.co.uk/path1/path2").Host它返回"www.google.co.uk“。然后就是字符串操作了。:/
https://stackoverflow.com/questions/5984361
复制相似问题