假设我有这段代码:
Uri uri = new Uri("www.xx.yy.co.uk/folder/whatever.html");
如何从C#中的xx
获取yy
,co.uk
,Uri
?我几乎尝试了Uri
课程的所有属性,但我没有找到任何相关内容。
请注意,例如,com
和co.uk
都是单个字符串。
答案 0 :(得分:1)
您已经发现内置的System.Uri没有突破URL的各个顶级(主机/域)部分。您要求的解析类型非常具体,因为.com
和.co.uk
不是URL中的等效组件(.com和.uk是)。
自己做两件简单的方法是:
修改established regex以解析Uri的Host
属性中保存的URL,并在正则表达式中使用named captures (groups)来方便地提取部分。
通过创建自己继承的System.Uri类来扩展它,并引入一种方法,以您想要的特定方式分解URL。
答案 1 :(得分:1)
问题在于,有一个非常大的"伪顶级域名列表,例如co.uk,wakayama.jp或edu.cn,甚至"顶级域名域"有三个部分。在C#中没有针对所有这些内置列表,因此我能看到的最佳解决方案是指定您期望的并将它们分开,如下所示:
?ps
背景: 唯一的官方顶级域名只是一个部分,例如.uk。所有"伪顶级域名的一个相当全面的列表"可在此处获取:https://wiki.mozilla.org/TLD_List。虽然它是一个很大的列表,但它似乎仍然不全面,因为许多国家只列出了1个顶级域名,并且有#34;(其他?)和#34;等字段。
答案 2 :(得分:-1)
这适用于此问题。检查数组元素:
Uri uri = new Uri("http://www.xx.yy.co.uk/folder/whatever.html");
string abs = uri.AbsoluteUri;
char[] splitChar = { '.' };
var nodesArray = abs.Split(splitChar).ToArray();