有一个objcet型的变量,里面的值是:
sqlParam
  (java.lang.Object) (ACCNO,AGECLS,CERTIFYDATE,CERTIFYTERM,CERTIFYTIME,CERTIFYUSERID,CLINICGRP,CLINICGRPTEL,DECIDEDATE,DECIDEDRNAME,DECIDETERM,DECIDETIME,DELDATE,DELTERM,DELTIME,DELUSERID,DOCNO,DOCSEQ,EMGSTS,EXAMAGE,EXAMAGEDAY,EXAMAGEMONTH,EXAMDATE,EXAMTERM,EXAMTIME,EXAMUSERID,FIRSTDECIDEDATE,FIRSTDECIDENAME,FIRSTDECIDETERM,FIRSTDECIDETIME,IMGCHGDATE,IMGCHGFLG,IMGCHGTERM,IMGCHGTIME,IMGCHGUSERID,IMGCNT,IMGSTS,INSPECTDATE,INSPECTID,INSPECTNAME,INSPECTTERM,INSPECTTIME,INSRNCNO,ISSUFLG1,ISSUFLG2,ISSUFLG3,ISSUFLG4,ISSUFLG5,LOCATEDEPTCD,LOCATEIOCLS,LOCATEROOM,LOCATEWARDCD,MEDIASTATUS1,MEDIASTATUS2,MEDIASTATUS3,MEDIASTATUS4,ODRDATE,ODRKINDCD,ODRKINDSEQ,ODRMATCHDATE,ODRMATCHFLG,ODRMATCHTERM,ODRMATCHTIME,ODRMATCHUSERID,ODRNO,ODRPATNAME,ODRPATNAMEK,ODRPATNAMEUS,ODRSEX,ODRSTS,ODRTERM,ODRTIME,OPEDATE,OPEDRNAME1,OPEDRNAME2,OPEDRNAME3,OPEDRUSERID1,OPEDRUSERID2,OPEDRUSERID3,OPEENGNAME1,OPEENGNAME2,OPEENGNAME3,OPEENGUSERID1,OPEENGUSERID2,OPEENGUSERID3,OPENSNAME1,OPENSNAME2,OPENSNAME3,OPENSUSERID1,OPENSUSERID2,OPENSUSERID3,OPETERM,OPETIME,OUTTIMESTS,PARTSUMMARY,PATNO,RECDATE,RECNO,RECSTS,RECTERM,RECTIME,RECUSERID,REPSTS,REQDEPTCD,REQDRID,REQDRNAME,REQIOCLS,REQROOM,REQWARDCD,RSVDATE,RSVTERM,RSVTIME,RSVUSERID,SERCNT,SLPKINDCD,STOPDATE,STOPSTS,STOPTERM,STOPTIME,STOPUSERID,THUMBNAILIMGPATH,UPDTERM,UPDUSERID) VALUES ('9700065907','2','','','','','','','','','','','','','','','ABLEEX000000000000000000000662','01','0',10,22,0,'20071225','','000000','','','','','','','','','','',0,'0','','','','','','','','','','','',' 01','1','','','','','','','20071225','21','0','','','','','','97000659','张三','zhangsan','zhang','1','25','127.0.0.1','140357','','','','','','','','test技師','高 隆','李 京','3','112267','141755','','','','','','','','','','20071225',405,'','127.0.0.1','140357','3','0',' 01','0000001','1','','','20071225','127.0.0.1','000000','3',0,'F','','','','','','','127.0.0.1','3')我其实只想要红色部分的东西,让他组成新的数组,作为另一个sql的插入条件但我不知道怎么才能取到3个值我想到的是,取固定的某个逗号开始的位置,和某个逗号结束的位置,就是那红色部分前后的逗号但不知道怎么做,那位大侠能提供一个方法,或者其他的方法和思路也可以小弟这里先谢谢了

解决方案 »

  1.   

    如果你逗号很规律,而你又想用逗号个数来取你的信息,下面的方法可以做到StringTokenizer gall=new StringTokenizer(str,",");
    int i=0;
    while (1=1){
        String gtstr=gall.nextToken();
        i++;
    }注:str是你的字符串,i是你循环逗号的次数
      

  2.   

    谢谢楼上的兄弟,小弟刚刚入门,没太看懂那个while后面的1=1是什么意思呀??
      

  3.   

    while (1=1){ 是语法错的
    换成 while(1==1){
    或者干脆 while(true){ 才行而且算法有问题吧!
         StringTokenizer gall=new StringTokenizer(str,",");
         while (gall.hasMoreTokens()) {
             println(gall.nextToken());
         }这个才是正确的算法
      

  4.   

    的确自己的回答有问题,刚刚发现,1==1才对
    而且判断到你想要的位置完成截取后,后面还要加break
      

  5.   

    用String里面的函数String.split(",")也可以的
      

  6.   

    太长了,为了显示不是很长,把字符串给段开来了。import java.util.Arrays;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Test {    public static void main(String[] args) {
            Object sqlParam = "(ACCNO,AGECLS,CERTIFYDATE,CERTIFYTERM,CERTIFYTIME," +
                    "CERTIFYUSERID,CLINICGRP,CLINICGRPTEL,DECIDEDATE,DECIDEDRNAME," +
                    "DECIDETERM,DECIDETIME,DELDATE,DELTERM,DELTIME,DELUSERID,DOCNO," +
                    "DOCSEQ,EMGSTS,EXAMAGE,EXAMAGEDAY,EXAMAGEMONTH,EXAMDATE,EXAMTERM," +
                    "EXAMTIME,EXAMUSERID,FIRSTDECIDEDATE,FIRSTDECIDENAME,FIRSTDECIDETERM," +
                    "FIRSTDECIDETIME,IMGCHGDATE,IMGCHGFLG,IMGCHGTERM,IMGCHGTIME," +
                    "IMGCHGUSERID,IMGCNT,IMGSTS,INSPECTDATE,INSPECTID,INSPECTNAME," +
                    "INSPECTTERM,INSPECTTIME,INSRNCNO,ISSUFLG1,ISSUFLG2,ISSUFLG3," +
                    "ISSUFLG4,ISSUFLG5,LOCATEDEPTCD,LOCATEIOCLS,LOCATEROOM,LOCATEWARDCD," +
                    "MEDIASTATUS1,MEDIASTATUS2,MEDIASTATUS3,MEDIASTATUS4,ODRDATE,ODRKINDCD," +
                    "ODRKINDSEQ,ODRMATCHDATE,ODRMATCHFLG,ODRMATCHTERM,ODRMATCHTIME," +
                    "ODRMATCHUSERID,ODRNO,ODRPATNAME,ODRPATNAMEK,ODRPATNAMEUS,ODRSEX," +
                    "ODRSTS,ODRTERM,ODRTIME,OPEDATE,OPEDRNAME1,OPEDRNAME2,OPEDRNAME3," +
                    "OPEDRUSERID1,OPEDRUSERID2,OPEDRUSERID3,OPEENGNAME1,OPEENGNAME2," +
                    "OPEENGNAME3,OPEENGUSERID1,OPEENGUSERID2,OPEENGUSERID3,OPENSNAME1," +
                    "OPENSNAME2,OPENSNAME3,OPENSUSERID1,OPENSUSERID2,OPENSUSERID3,OPETERM," +
                    "OPETIME,OUTTIMESTS,PARTSUMMARY,PATNO,RECDATE,RECNO,RECSTS,RECTERM," +
                    "RECTIME,RECUSERID,REPSTS,REQDEPTCD,REQDRID,REQDRNAME,REQIOCLS,REQROOM," +
                    "REQWARDCD,RSVDATE,RSVTERM,RSVTIME,RSVUSERID,SERCNT,SLPKINDCD,STOPDATE," +
                    "STOPSTS,STOPTERM,STOPTIME,STOPUSERID,THUMBNAILIMGPATH,UPDTERM,UPDUSERID)" +
                    " VALUES ('9700065907','2','','','','','','','','','','','','','',''," +
                    "'ABLEEX000000000000000000000662','01','0',10,22,0,'20071225','','000000'," +
                    "'','','','','','','','','','',0,'0','','','','','','','','','','','','01'," +
                    "'1','','','','','','','20071225','21','0','','','','','','97000659','张三'," +
                    "'zhangsan','zhang','1','25','127.0.0.1','140357','','','','','','',''," +
                    "'test技師','高 隆','李 京','3','112267','141755','','','','','','','','',''," +
                    "'20071225',405,'','127.0.0.1','140357','3','0','   01','0000001','1','',''," +
                    "'20071225','127.0.0.1','000000','3',0,'F','','','','','','','127.0.0.1','3')";        String[] newValues = getValues(sqlParam.toString(), 82, 3);
            System.out.println(Arrays.toString(newValues));
        }    /**
         * 从INSERT语句中取出部分VALUES
         * @param sql INSERT语句
          * @param startIndex 截取值的开始索引点,第一个为“0”
          * @param length 截取VALUES的数量
          * @return 被截取到的字符串数组
          */
        private static String[] getValues(String sql, int startIndex, int length) {
            Pattern pattern = Pattern.compile(".*VALUES\\s*\\((.*)\\)", Pattern.CASE_INSENSITIVE);
            Matcher matcher = pattern.matcher(sql);
            String values = null;
            if(matcher.find()) {
                values = matcher.group(1);
            }
            String[] newValues = new String[length];
            if(values != null) {
                String[] strs = values.split(",");
                System.arraycopy(strs, startIndex, newValues, 0, length);
            }
            return newValues;
        }
    }
      

  7.   

    二楼的那个方法根本就不能满足你的要求,并没有你所要的东西组成字符串数组。
    我的那个是采用正则表达式取出VALUES括号中的所有字符串,然后再使用逗号分隔
    成字符串数组,再把需要的东西拷贝成为另一个数组。这样做已经是很简单的了~~你不是要完整的吗,二楼的那个写完整的话也不会少的。
      

  8.   

    [size=30px]o(∩_∩)o[/size]