编程语言
首页 > 编程语言> > java – 从给定的URL中提取主域名

java – 从给定的URL中提取主域名

作者:互联网

我使用以下内容从URL中提取域:(它们是测试用例)

String regex = "^(ww[a-zA-Z0-9-]{0,}\\.)";
ArrayList<String> cases = new ArrayList<String>();
cases.add("www.google.com");
cases.add("ww.socialrating.it");
cases.add("www-01.hopperspot.com");
cases.add("wwwsupernatural-brasil.blogspot.com");
cases.add("xtop10.net");
cases.add("zoyanailpolish.blogspot.com");

for (String t : cases) {  
    String res = t.replaceAll(regex, "");  
}

我可以得到以下结果:

google.com
hopperspot.com
socialrating.it
blogspot.com
xtop10.net
zoyanailpolish.blogspot.com

前四个案例都很好.最后一个不好.我想要的是:blogspot.com的最后一个,但它给zoyanailpolish.blogspot.com.我究竟做错了什么?

解决方法:

正如BalusC和其他人所建议的那样,最实际的解决方案是获取TLD列表(请参阅此list),将它们保存到文件中,加载它们,然后确定给定URL字符串使用的TLD.从那以后,您可以构成主域名,如下所示:

    String url = "zoyanailpolish.blogspot.com";

    String tld = findTLD( url ); // To be implemented. Add to helper class ?

    url = url.replace( "." + tld,"");  

    int pos = url.lastIndexOf('.');

    String mainDomain = "";

    if (pos > 0 && pos < url.length() - 1) {
        mainDomain = url.substring(pos + 1) + "." + tld;
    }
    // else: Main domain name comes out empty

实施细节由您自己决定.

标签:domain-name,java,regex,url
来源: https://codeday.me/bug/20191001/1837917.html