我有一个StringBuffer,其中包含重复值,如示例左侧所示,并希望将其转换为右侧的一个showm。两种情况如下所示
{1,1,1,2,2,} to `{1,2}`
{a,a,a,b,c,c,c,}
至{a,b,c}
请注意,StringBuffer的内容和大小不固定。我想通过字符串操作来解决这个问题。
答案 0 :(得分:0)
这里的解决方案适用于不相邻的重复项。虽然有点笨重......
//Deletes all extra occurrences of String x(which can just be a single character)
public static StringBuffer removeDuplicateOf(StringBuffer s, String x){
while(s.indexOf(x) != s.lastIndexOf(x))
s.deleteCharAt(s.lastIndexOf(x));
return s;
}
请注意,如果您不知道哪些项目是重复的,则必须在StringBuffer中的每个项目上调用此项目。 (在StringBuffer中每个唯一项一次。)
例如你可以这样做:
StringBuffer s = new StringBuffer("1,2,4,8,16,1,2,4,6,8,10,12,14,16,");
s.removeDuplicateOf(s, "1,");
这样可以避免删除" 1"来自" 16"," 10"等等,同时仍然删除" 1"的其他事件。
答案 1 :(得分:-2)
String s = "1,1,1,2,2";
System.out.println(s.replaceAll("(.)\\1+", "$1"));