解析域/主机名的字符串
本文关键字:字符串 主机 | 更新日期: 2023-09-27 18:35:06
Out客户可以从域名进入网站。他们还可以从他们的联系人输入邮件地址。
知道我们需要找到哪些网站域名可以与邮件地址的域相关联的客户。
所以我的想法是从webadress和url中提取主机并进行比较
那么从 url 获取主机名的最可靠算法是什么?
例如,主机可以是:
foo.com
www.foo.com
http://foo.com
https://foo.com
https://www.foo.com
结果应始终 foo.com
与其依赖不可靠的正则表达式,不如使用 System.Uri
为您解析。使用如下代码:
string uriStr = "www.foo.com";
if (!uriStr.Contains(Uri.SchemeDelimiter)) {
uriStr = string.Concat(Uri.UriSchemeHttp, Uri.SchemeDelimiter, uriStr);
}
Uri uri = new Uri(uriStr);
string domain = uri.Host; // will return www.foo.com
现在,要仅获取您可以使用的顶级域,请执行以下操作:
string tld = uri.GetLeftPart( UriPartial.Authority ); // will return foo.com
这是一个正则表达式,它将与您提供的 url 匹配。 基本上 http 和 https 等是可选的,就像 www 一样 然后一切都匹配到可能的路径;
var expression = /(https?:'/'/)?(www'.)?([^'/]*)('/.*)?$/;
这意味着;
var result = 'https://www.foo.com.vu/blah'.replace(expression, '$3')
将评估为
result === 'foo.com.vu'
c# 中已经有一个 url 解析器用于提取此信息
以下是一些示例 http://www.stev.org/post/2011/06/27/C-HowTo-Parse-a-URL.aspx
请参阅此网址。 与颁发机构不同,Host 属性将不包括端口号。
http://msdn.microsoft.com/en-us/library/system.uri.host(v=vs.110).aspx