我需要从任何Url中提取确切的域名。
例如,
到目前为止,这就是我所尝试过的,它没有返回我所期望的确切结果,有人能在这里帮助我吗?
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;
}发布于 2014-10-18 03:59:01
使用系统命名空间中的URI类
Uri myUri = new Uri("http://www.something.com/");它有一些属性,比如主机,应该可以得到你想要的.
发布于 2014-10-18 06:28:12
请尝试以下代码:
public string GetDomainName(string domainURL)
{
string domain = new Uri(domainURL).DnsSafeHost.ToLower();
domain = domainURL.Split(':')[0] + "://" + domain;
return domain;
}我认为您应该拆分并从字符串开始获取协议,并将其附加到域中。如果您传递任何没有像http://这样的协议的URL,代码new Uri()方法将抛出错误。
所以,我认为代码domainURL.Split(':')[0] + "://" + domain;会对你有用的。
请用您的建议输入来测试它。
发布于 2014-10-18 05:24:49
下面是使用乌里类提取部件的代码,然后将您想要的部分放在一起。
然而,似乎您特别希望删除"www.“部分,因此我为它添加了一个字符串替换。
Uri MyUri = new Uri(domainURL);
string Result = MyUri.GetLeftPart(UriPartial.Scheme);
Result += MyUri.GetComponents(UriComponents.Host, UriFormat.SafeUnescaped).Replace("www.", string.Empty);
return Result;https://stackoverflow.com/questions/26436131
复制相似问题