我需要从任何网址中提取确切的域名.
例如,
网址:http://www.google.com - >域名:google.com
网址:http://www.google.co.uk/path1/path2 - >域名:google.co.uk
怎样才能在c#中实现?是否有完整的TLD列表或该任务的解析器?
dtb*_*dtb 31
您可以使用Uri类访问URI的所有组件:
var uri = new Uri("http://www.google.co.uk/path1/path2");
var host = uri.Host;
// host == "www.google.co.uk"
Run Code Online (Sandbox Code Playgroud)
但是,没有内置的方法可以将子域名"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"
}
Run Code Online (Sandbox Code Playgroud)
mik*_*mes 16
使用:
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://", ""));
Run Code Online (Sandbox Code Playgroud)
输入:
http://www.stackoverflow.com/questions/5984361/c-sharp-getting-exact-domain-name-from-any-url?s=45faab89-43eb-41dc-aa5b-8a93f2eaeb74#new-answer
Run Code Online (Sandbox Code Playgroud)
输出:
stackoverflow.com
Run Code Online (Sandbox Code Playgroud)
也适用于以下.
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
试试System.Uri类.
http://msdn.microsoft.com/en-us/library/system.uri.aspx
new Uri("http://www.google.co.uk/path1/path2").Host
Run Code Online (Sandbox Code Playgroud)
返回"www.google.co.uk".从那里它是字符串操纵.:/
| 归档时间: |
|
| 查看次数: |
36353 次 |
| 最近记录: |