其他分享
首页 > 其他分享> > 字符串去重并统一使用换行符进行分隔

字符串去重并统一使用换行符进行分隔

作者:互联网

需求背景

XX需求,批量输入域名的时候,需要对域名字符串进行分隔,并去重,同时分隔后统一使用换行符进行保存,便于下一次批量展示

输入

www.baidu.com fdas.com  google.com   www.baidu.com;
gool.com

预期结果

www.baidu.com
fdas.com
google.com
gool.com

代码

    /**
     * 对使用(,; \n) 逗号、分号,空格,换行符隔开的字符串进行分隔,去重后并统一使用换行符进行分隔
     * @param domains 
     * @return
     */
    public String  filterDuplicatedDomains(String domains) {
        Set<String> set = new LinkedHashSet<>();
        if (Strings.isNullOrEmpty(this.domains)) {
            return this.domains;
        }
        StringBuffer domain = new StringBuffer();
        StringBuffer newDomains = new StringBuffer();

        //O(n)复杂度扫描
        for (int i = 0; i < domains.length(); i++) {
            char c = domains.charAt(i);
            if (c == '\n' || c == ',' || c == ';' || c == ' ') {
                if (domain.length() != 0){
                    if(set.add(domain.toString())){
                        newDomains.append(domain).append("\n");
                    }
                    domain.setLength(0);
                }
            }else{
                domain.append(c);
            }
        }

        //最后一个有效的域名
        if (domain.length() != 0){
            if(set.add(domain.toString())){
                newDomains.append(domain).append("\n");
            }
        }
        //去掉最后一个换行符
        if (newDomains.length() != 0){
            newDomains.deleteCharAt(newDomains.length()-1);
        }
        return newDomains.toString();
    }

标签:domain,分隔,newDomains,domains,length,字符串,换行符,com,append
来源: https://www.cnblogs.com/yanchuanbin/p/16434169.html