字符串截取

从url链接中获取域名 顶级域名信息 不是 www.baidu.com这种二级域名, 是 baidu.com

例: 从ss.99.www.aa.com 中获取 aa.com

获取域名方法

public static String getDomain(String url){
        int x = StrUtil.indexOf(url,'/');
        if (x < 0) {
            // todo 2021/4/1 暂时没想好怎么写 不是域名的url
            return url;
        }
        x = StrUtil.indexOf(url,'/',x + 2);
        if (x < 0) {
            return url;
        }
        url = StrUtil.sub(url, 0, x);
        return url;
    }

这个方法可以用来截取域名, 但是不能获取顶级域名

  • 测试了一下还真行

原文

@Test
    public void main() {

        //定义好获取的域名后缀。如果还有要定义的	请添加 |(\\.域名的后缀) 。
        String regStr="[0-9a-zA-Z]+((\\.com)|(\\.cn)|(\\.org)|(\\.net)|(\\.edu)|(\\.com.cn)|(\\.xyz)|(\\.xin)|(\\.club)|(\\.shop)|(\\.site)|(\\.wang)" +
                "|(\\.top)|(\\.win)|(\\.online)|(\\.tech)|(\\.store)|(\\.bid)|(\\.cc)|(\\.ren)|(\\.lol)|(\\.pro)|(\\.red)|(\\.kim)|(\\.space)|(\\.link)|(\\.click)|(\\.news)|(\\.news)|(\\.ltd)|(\\.website)" +
                "|(\\.biz)|(\\.help)|(\\.mom)|(\\.work)|(\\.date)|(\\.loan)|(\\.mobi)|(\\.live)|(\\.studio)|(\\.info)|(\\.pics)|(\\.photo)|(\\.trade)|(\\.vc)|(\\.party)|(\\.game)|(\\.rocks)|(\\.band)" +
                "|(\\.gift)|(\\.wiki)|(\\.design)|(\\.software)|(\\.social)|(\\.lawyer)|(\\.engineer)|(\\.org)|(\\.net.cn)|(\\.org.cn)|(\\.gov.cn)|(\\.name)|(\\.tv)|(\\.me)|(\\.asia)|(\\.co)|(\\.press)|(\\.video)|(\\.market)" +
                "|(\\.games)|(\\.science)|(\\.中国)|(\\.公司)|(\\.网络)|(\\.pub)" +
                "|(\\.la)|(\\.auction)|(\\.email)|(\\.sex)|(\\.sexy)|(\\.one)|(\\.host)|(\\.rent)|(\\.fans)|(\\.cn.com)|(\\.life)|(\\.cool)|(\\.run)" +
                "|(\\.gold)|(\\.rip)|(\\.ceo)|(\\.sale)|(\\.hk)|(\\.io)|(\\.gg)|(\\.tm)|(\\.com.hk)|(\\.gs)|(\\.us))";
        Pattern p = Pattern.compile(regStr);
        String host = "http://www.aaa.baidu.com/png";
        Matcher m = p.matcher(host);
        String domain = "没获取到";
        //获取一级域名
        while(m.find()){
            domain = m.group();
        }
        System.out.println("一级域名:" + domain);
    }

感谢大哥

此方法需要与获取域名方法连用

    public static void main(String[] args) {
        String url = "https://a.sss.11.ss.99.www.aa.com";
        System.out.println("最终输出: " + test(url, 2, ""));;
    }

    /**
     * 递归截取域名
     * @param url 源域名
     * @param num 次数
     * @param newUrl 顶级域名
     * @return ret
     */
    private static String test(String url, Integer num, String newUrl){
        int x = url.lastIndexOf('.');
        if (num == 1) {
            x += 1;
        }
        String modifyUrl = StrUtil.sub(url, x, url.length());
        System.out.println("输出" + num + "次:" + modifyUrl);
        newUrl = modifyUrl + newUrl;
        System.out.println("域名输出" + num + "次:" + newUrl);

        url = StrUtil.sub(url, 0, x);
        if (num != 1){
            num -= 1;
            return test(url, num, newUrl);
        }
        return newUrl;
    }