有一个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个值我想到的是,取固定的某个逗号开始的位置,和某个逗号结束的位置,就是那红色部分前后的逗号但不知道怎么做,那位大侠能提供一个方法,或者其他的方法和思路也可以小弟这里先谢谢了
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个值我想到的是,取固定的某个逗号开始的位置,和某个逗号结束的位置,就是那红色部分前后的逗号但不知道怎么做,那位大侠能提供一个方法,或者其他的方法和思路也可以小弟这里先谢谢了
int i=0;
while (1=1){
String gtstr=gall.nextToken();
i++;
}注:str是你的字符串,i是你循环逗号的次数
换成 while(1==1){
或者干脆 while(true){ 才行而且算法有问题吧!
StringTokenizer gall=new StringTokenizer(str,",");
while (gall.hasMoreTokens()) {
println(gall.nextToken());
}这个才是正确的算法
而且判断到你想要的位置完成截取后,后面还要加break
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;
}
}
我的那个是采用正则表达式取出VALUES括号中的所有字符串,然后再使用逗号分隔
成字符串数组,再把需要的东西拷贝成为另一个数组。这样做已经是很简单的了~~你不是要完整的吗,二楼的那个写完整的话也不会少的。