获取URI的一部分

时间:2015-05-06 01:16:42

标签: c# uri

假设我有这段代码:

Uri uri = new Uri("www.xx.yy.co.uk/folder/whatever.html");

如何从C#中的xx获取yyco.ukUri?我几乎尝试了Uri课程的所有属性,但我没有找到任何相关内容。

请注意,例如,comco.uk都是单个字符串。

3 个答案:

答案 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();