字符串去重并统一使用换行符进行分隔
作者:互联网
需求背景
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