像这样的数字,要求:如果前后是连续的数字,取最大和最小的中间用‘-’分割拼串,如果不连续就正常显示;例如;1206000045,1206000052,1206001288-1206001290,120600;所有的拼好的都用‘,’分开,然后整体拼成一个String类型的字符串传到前台
哪位大神指点一下java后台怎么拼串

解决方案 »

  1.   

    如果我没理解错,你可以参照以下代码:
          String numstr = "1206000045,1206000052,1206001288,1206001289,120600";    
            String[] numArr = numstr.split(",");
            int len = numArr.length;
            String newnumstr = "";
            for (int i = 0; i < len - 1; i++) {
                int num1 = NumberTool.safeToInteger(numArr[i], 0);
                int num2 = NumberTool.safeToInteger(numArr[i + 1], 0);
                if (i == 0)
                    newnumstr += num1 + "";
                if (num1 + 1 != num2)
                    newnumstr += "," + num2;
                else
                    newnumstr += "-" + num2;
            }
      

  2.   


    public static StringBuilder formatStr(String str){
    String[] arr=str.split(",");
    int len=arr.length;
    long min=-1;
    long max=-1;
    StringBuilder result=new StringBuilder();
    for(int i=0;i<len;i++){
    if(i!=len-1){
    min=Long.valueOf(arr[i]);
    max=Long.valueOf(arr[i+1]);
    if(max-min==1){
    result.append(min).append("-");
    int j=i+1;
    while((j!=len-1)&&Long.valueOf(arr[j])+1==Long.valueOf(arr[j+1])){
    max=Long.valueOf(arr[j+1]);
    j++;
    }
    result.append(max).append(j==len-1?"":",");
    i=j;
    }else{
    result.append(arr[i]).append(",");
    }
    }else{
    result.append(arr[i]);
    }
    }
    return result;
    }