java如何将 这样的 字符串String str = "1,1,1,1,1,2,3,";
变成 str ="1,2,3,";
把相同的1合并

解决方案 »

  1.   


     String str = "1,1,1,1,1,2,3,";
            Set set = new LinkedHashSet();        String[] temp = str.split(",");
            for (int i = 0; i < temp.length; i++)
            {
                set.add(temp[i]);
            }
            System.out.println(set.toString());
      

  2.   

    String str = "1,1,1,1,1,2,3,";
    str = str.replaceAll("1,(?=1)","");
    System.out.println(str);
      

  3.   


    String str = "1,1,1,1,1,2,3,";
            int m = 0;
            int n = 0;
            String s = "";
            while (true) {
                m = str.indexOf(",", m+1);
                if (m == (str.length() - 1)) {
                    break;
                }
                s = str.substring(n, m);
                if(str.indexOf(s, n+1)!=-1){
                    //替换掉所有重复的
                    str = str.replaceAll(s + ",", "");
                    //把重复的只留一个
                    str = str.substring(0, n)+s+","+str.substring(m-1,str.length());
                }
                n = m + 1;
            }
            System.out.println(str);
      

  4.   

    public class StringTest {
    public static void main(String[] args){
    String      s="1,1,1,2,4,1,3,14,17,1,2,3,";
    String[]    a=distinct(
         s.replaceAll("\\s+","")
          .split(",")
      ); System.out.println(join(a,","));
    }

    public static String[] distinct(String[] a){
    String[] ret=null;

    if(a==null||a.length==0) return ret;

    int    count=0;
    int[]  index=new int[a.length];
    String  preEl="";

    Arrays.sort(a);
    for(int i=0,j=0,len=a.length;i<len;i++){
    if(!a[i].equals(preEl)){
    index[j++]=i;
    preEl=a[i];
    count++;
    }
    }

    ret=new String[count];
    for(int i=0;i<count;i++){
    ret[i]=a[index[i]];
    }

    return ret;
    }


    public static String join(
    String[]  a, 
    String    delimiter){
        
    if (a==null||a.length==0) return "";     
       
        StringBuffer buf = new StringBuffer(a[0]);
        
        for(int i=1,len=a.length;i<len;i++) {
            buf.append(delimiter);
            buf.append(a[i]);
        }
        
        return buf.toString();
    }
    }