从 Java 中的字符串中删除重复值
2022-09-03 09:03:50
任何人都可以让我知道如何从中删除重复值
String s="Bangalore-Chennai-NewYork-Bangalore-Chennai";
和输出应该像
String s="Bangalore-Chennai-NewYork-";
使用 Java..
任何帮助将不胜感激。
任何人都可以让我知道如何从中删除重复值
String s="Bangalore-Chennai-NewYork-Bangalore-Chennai";
和输出应该像
String s="Bangalore-Chennai-NewYork-";
使用 Java..
任何帮助将不胜感激。
这在一行中完成:
public String deDup(String s) {
return new LinkedHashSet<String>(Arrays.asList(s.split("-"))).toString().replaceAll("(^\\[|\\]$)", "").replace(", ", "-");
}
public static void main(String[] args) {
System.out.println(deDup("Bangalore-Chennai-NewYork-Bangalore-Chennai"));
}
输出:
Bangalore-Chennai-NewYork
请注意,订单保留:)
关键点是:
split("-")
以数组的形式提供不同的值Arrays.asList()
将数组转换为列表LinkedHashSet
保留唯一性和插入顺序 - 它完成所有工作,为我们提供唯一值,这些值通过构造函数传递toString()
[element1, element2, ...]
replace
toString()
此解决方案要求值不包含字符序列 - 这是此类简洁代码的合理要求。", "
当然是1行:
public String deDup(String s) {
return Arrays.stream(s.split("-")).distinct().collect(Collectors.joining("-"));
}
如果您不关心保留顺序(即可以删除重复项的第一次出现):
public String deDup(String s) {
return s.replaceAll("(\\b\\w+\\b)-(?=.*\\b\\1\\b)", "");
}
public static String removeDuplicates(String txt, String splitterRegex)
{
List<String> values = new ArrayList<String>();
String[] splitted = txt.split(splitterRegex);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < splitted.length; ++i)
{
if (!values.contains(splitted[i]))
{
values.add(splitted[i]);
sb.append('-');
sb.append(splitted[i]);
}
}
return sb.substring(1);
}
用法:
String s = "Bangalore-Chennai-NewYork-Bangalore-Chennai";
s = removeDuplicates(s, "\\-");
System.out.println(s);
指纹:
Bangalore-Chennai-NewYork