有简单的正则表达式和其他简单的方法可以做到这一点,但它们不能很好地处理边缘情况(如下所述),这就是为什么我要问一个新问题。 < / p>
我正在尝试编写一个相当简单的函数来解析C#中的DNS响应,但是有些细节很烦人,所以我要求找到解决它的最佳方法。
我想获取一个网址字符串,例如test.bounce.twitter.com
并移除subdomains
以获取twitter.com
。
然而,边缘案件让我感到困惑:
bounce.twitter.com ---> twitter.com
twitter.com ---> twitter.com
amazon.co.uk ---> amazon.co.uk (Notice the .co.uk domain!)
news.home.barclays ---> home.barclays (Note the gTLD with longer than 3 characters; website was formerly barclays.com, belongs to billion dollar bank)
值得注意的是,对于像.uk这样的顶级域名,使用news.mail.amazon.co.uk
等网址并返回co.uk
无效,即使co.uk
在技术上是正确的二级域名。
此外,此列表将解析包含具有gTLD的域的网址,例如website.photography
或website.club
或website.gallery
,因此对TLD列表进行硬编码会很快变得混乱。
如何编写从URL中剥离子域的方法,同时仍处理边缘案例?处理国家代码,通用顶级域名等的事情。