我需要从任何网址中提取确切的域名。
例如,
这是我到目前为止所尝试的,这并没有返回我期待的任何人可以帮助我的确切结果
public static string GetDomainName(string domainURL) {
string domain = new Uri(domainURL).DnsSafeHost.ToLower();
var tokens = domain.Split('.');
if (tokens.Length > 2)
{
//Add only second level exceptions to the < 3 rule here
string[] exceptions = { "info", "firm", "name", "com", "biz", "gen", "ltd", "web", "net", "pro", "org" };
var validTokens = 2 + ((tokens[tokens.Length - 2].Length < 3 || exceptions.Contains(tokens[tokens.Length - 2])) ? 1 : 0);
domain = string.Join(".", tokens, tokens.Length - validTokens, validTokens);
}
return domain;
}
答案 0 :(得分:3)
使用System namespace
中的URI类Uri myUri = new Uri("http://www.something.com/");
它具有主机等属性,可让您根据需要...
答案 1 :(得分:1)
请尝试以下代码:
public string GetDomainName(string domainURL)
{
string domain = new Uri(domainURL).DnsSafeHost.ToLower();
domain = domainURL.Split(':')[0] + "://" + domain;
return domain;
}
我认为你应该拆分并从字符串的开头获取协议并将其附加到域。如果您传递没有http://
等协议的任何网址,则代码new Uri()
方法会抛出错误。
所以,我认为代码domainURL.Split(':')[0] + "://" + domain;
对您有用。
请使用您提出的输入进行测试。
答案 2 :(得分:0)
以下是使用Uri类提取部件的代码,然后将您想要的部件放回原处。
然而,好像你特别想要&#34; www。&#34;一块被移除,所以我扔了一个字符串代替。
Uri MyUri = new Uri(domainURL);
string Result = MyUri.GetLeftPart(UriPartial.Scheme);
Result += MyUri.GetComponents(UriComponents.Host, UriFormat.SafeUnescaped).Replace("www.", string.Empty);
return Result;
答案 3 :(得分:0)
试试这个:
Uri myUri = new Uri("http://www.something.subdomain.com");
string host = myUri.Host;
主持人就是你要找的。 p>