从StringBuffer中删除重复值

时间:2015-06-24 16:53:03

标签: java stringbuffer

我有一个StringBuffer,其中包含重复值,如示例左侧所示,并希望将其转换为右侧的一个showm。两种情况如下所示

{1,1,1,2,2,} to `{1,2}` 

{a,a,a,b,c,c,c,}{a,b,c}

请注意,StringBuffer的内容和大小不固定。我想通过字符串操作来解决这个问题。

2 个答案:

答案 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"));