有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从StringBuffer中删除重复值

我有一个StringBuffer,它包含重复的值,如示例左侧所示,并希望将其转换为右侧的showm。下面显示了两个案例

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

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

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


共 (2) 个答案

  1. # 1 楼答案

    String s = "1,1,1,2,2";
    System.out.println(s.replaceAll("(.)\\1+", "$1"));
    
  2. # 2 楼答案

    这里有一个解决方案,适用于不相邻的副本。虽然有点笨重

    //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,");
    

    这样可以避免删除“16”、“10”等中的“1”,同时仍然删除“1”的其他出现项