15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,
15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,
15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,
15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,
15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,
15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,
15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,
15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678
这是72个手机号,在界面上以这种逗号(,)分隔的方式传入后台。
我想以70个为一单位进行拆分,拆分后的70个手机号,也是以逗号(,)分隔的方式存入数据库,有什么好方法啊?
我的做法是:
int phoneNums = phonenumber.indexOf(",") == -1 ? 1 : phonenumber.split(",").length;//phonenumber是上这组手机号
String phone[] = phonenumber.split(",");
StringBuffer sb = new StringBuffer();
for(int p=0;p<phone.length;p++){
   sb.append(phone[p]);
}
int y = phoneNums/70; 
int x = phoneNums%70;
if((phoneNums>70)&&(x!=0)){//大于70个手机号但不是70的整数倍
    for(int i=0;i<=y;i++){
        String num = null;
        String num1 = null;
if(i!=y){
   num1 = sb.toString().substring(i*70,(i+11)*70);
}else{
   num1 = sb.toString().substring(sb.length()-x,sb.length());
}
//拆分手机号码
char [] c = num1.toCharArray();
for(int j=0;j<c.length;j++){
num=num+c[j]+",";
}
pstmt.setString(1, num.substring(4, num.length()-1));//这一行是往数据库里存手机号的
出现的问题是:存入数据的手机号是以一个数字进行分隔的,如1,5,0,1,2,3,4,5,6,7,8
请问:代码应该怎么写啊?

解决方案 »

  1.   

    如果确定是手机号,分割符确定的话就直接分割字符串吧,我国手机号位数固定为11位,呵呵,70个就是770+69(分割符)=839
    如果长度大于839,subString(0,839)就是你要的第一个串了,依次类推....
      

  2.   

    LZ看看这个:
    public static void main(String[] args) {
    String s = "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345679,15012345679 "
    +
    // 两组 144条,这里是分界点
    ",15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345679,15012345679 "; String s2 = "";
    String[] arr = s.split(",");
    System.out.println("总共有: " + arr.length);
    int len = 70;
    // 循环几个70
    int cycletime = arr.length / len;
    // 余下的部分
    int remLen = arr.length % len;
    for (int i = 0; i < cycletime; i++) {
    for (int j = 0; j < len; j++) {
    s2 += "," + arr[j];
    }
    s2 = s2.substring(1);
    System.out.println("第" + cycletime + "组:");
    System.out.println(s2);
    // 存入数据库
    // ...
    }
    // 余下部分
    System.out.println("余下的:");
    s2 = "";
    for (int i = 0; i < remLen; i++) {
    s2 += "," + arr[i + 70 * cycletime];
    }
    s2 = s2.substring(1);
    System.out.println(s2);
    // 存入数据库 }
      

  3.   


    import java.util.Arrays;
    import java.util.List;public class TestMain {
        public static void main(String[] args) {
            String s = "15012345678,15012345678,15012345678,15012345678";
            String[] ss = s.split(",");
            List<String> list = Arrays.asList(ss);
            for(int i = 0; i < list.size();) {
                int start = i;
                int end;
                if(i + 70 > list.size()) {
                    end = list.size();
                } else {
                    end = i + 70;
                }
                List<String> temp = list.subList(start, end);
                System.out.println(temp.toString().replaceAll("[\\[\\]]", ""));
                i += 70;
            }
        }
    }号码我就不加那么多了,LZ可以测一下,是可以通过的!
      

  4.   


    public static void main(String[] args) {
            String s = "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
                    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
                    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
                    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
                    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
                    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
                    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
                    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345679,15012345679 "
                    +
                    ",15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
                    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
                    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
                    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
                    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
                    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
                    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
                    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345679,15012345679 ";
         
    Vector ts = new Vector();
      StringTokenizer   t   =   new   StringTokenizer( s, ",");
           String result="";
         while   ( t.hasMoreTokens())       { String a=t.nextToken();
    if(a!=null || a.length()!=0) ts.addElement( a);
    }
    for(int i=0; i<ts.size();i++){
    if(i%70!=0){

             while(tt.hasMoreTokens()){
      result+=","+(String)tt.nextToken();
    }else{
                    result=(String)tt.nextToken();}}
    }
      

  5.   


    再看下吧,加个判断就可以了:
    public static void main(String[] args) {
    String s = "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678"; String s2 = "";
    String[] arr = s.split(",");
    System.out.println("总共有: " + arr.length);
    int len = 70;
    // 循环几个70
    int cycletime = arr.length / len;
    // 余下的部分
    int remLen = arr.length % len;
    for (int i = 0; i < cycletime; i++) {
    for (int j = 0; j < len; j++) {
    s2 += "," + arr[j];
    }
    s2 = s2.substring(1);
    System.out.println("第" + (i + 1) + "组:");
    System.out.println(s2);
    // 存入数据库
    // ...
    }
    // 余下部分
    if (remLen > 0) {
    System.out.println("余下的:");
    s2 = "";
    for (int i = 0; i < remLen; i++) {
    s2 += "," + arr[i + 70 * cycletime];
    }
    s2 = s2.substring(1);
    System.out.println(s2);
    }
    // 存入数据库
    }
      

  6.   

    不用那么复杂直接通过正则获取分组就行了!String s = "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
                + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
                + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
                + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
                + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
                + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
                + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
                + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345070,"
                //70
                +"15012345679,15012345000,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
                + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
                + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
                + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
                + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
                + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
                + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
                + "15012345678,15012345678,15012345678,15012345678,15012345140,"
                //140
                +"15012345678,15012345111,15012345679,15012345111";
              Pattern p=Pattern.compile("(\\d{11},?){70}|(\\d{11},?){0,70}");
              Matcher m=p.matcher(s);
              while(m.find())
                  System.out.println(m.group());
      

  7.   


    String s = "13598765432,13598765432,13598765432,13598765432,13598765432,";
      int seventyNumberLength = 12*70-1;
      for(int i=0;i>(s.length()/seventyNumberLength)+1;i++){
      insert(s.substring(i>0?seventyNumberLength*i+1:0,seventyNumberLength*(i+1)-1);
      }
      

  8.   


    不好意思,貌似程序还是有点问题...现在好了.
    public static void main(String[] args) {
    String s = "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345671,15012345671,15012345670,15012345670"

    + ",15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345679,15012345679,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,15012345678,"
    + "15012345678,15012345678,15012345678,15012345676,15012345676,15012345677,15012345677,15012345679,15012345679 "; String s2 = "";
    String[] arr = s.split(",");
    System.out.println("总共有: " + arr.length);
    int len = 70;
    // 循环几个70
    int cycletime = arr.length / len;
    // 余下的部分
    int remLen = arr.length % len;
    for (int i = 0; i < cycletime; i++) {
    for (int j = 0; j < len; j++) {
    s2 += "," + arr[j + 70 * i];
    }
    s2 = s2.substring(1);
    System.out.println("第" + (i + 1) + "组:");
    System.out.println(s2.split(",").length);
    System.out.println(s2);
    // 存入数据库
    // ...
    // 清空
    s2 = "";
    }
    // 余下部分
    if (remLen > 0) {
    System.out.println("余下的:");
    s2 = "";
    for (int i = 0; i < remLen; i++) {
    s2 += "," + arr[i + 70 * cycletime];
    }
    s2 = s2.substring(1);
    System.out.println(s2);
    }
    // 存入数据库
    }
    看下这部分代码:
    // 循环几个70
    int cycletime = arr.length / len;
    // 余下的部分
    int remLen = arr.length % len;
    for (int i = 0; i < cycletime; i++) {
    for (int j = 0; j < len; j++) {
    s2 += "," + arr[j + 70 * i];
    }
    s2 = s2.substring(1);
    System.out.println("第" + (i + 1) + "组:");
    System.out.println(s2.split(",").length);
    System.out.println(s2);
    // 存入数据库
    // ...
    // 清空
    s2 = "";
    }
    如果有140条的话,那arr.length / len(140/70=2)
    也就是外面的大循环循环两遍,里面那个循环每次循环70下
    for (int j = 0; j < len; j++) {
    // 当第二个70的时候就是arr[0 + 70*1]开始
    s2 += "," + arr[j + 70 * i];
    }不知道有没理解...
      

  9.   

    To:20L为什么不直接:Pattern p = Pattern.compile("(\\d{11},?){0,70}");
    ?