import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @author QuarterLifeForJava */ public class Test{ public static void main(String[] args) { System.out.println(testPrintSQL("H002",12,1009)); String sql = "SELECT rat.id,rat.sName,rat.dApplyDate,rat.tiRestType,rat.dStartDate,rat.dEndDate,rat.fInterval "+ "FROM restapplytbl rat "+ "WHERE rat.id IN"+ "("+ " SELECT rt.iRestApplyId "+ " FROM restprocesstbl rt "+ " WHERE rt.id IN"+ " ("+ " SELECT pmt.smissionid "+ " FROM pendingmissiontbl pmt "+ " WHERE pmt.imissionkindid=?"+ " AND pmt.imissionkinddetailsid=?"+ " AND pmt.smissionexecutor=?"+ " )"+ ")"; String worknum = "H002"; int missionKindId = 12; int missionKindDetailsId = 1009; //顺序要对好 Object obj[] = new Object[]{missionKindId,missionKindDetailsId,worknum}; System.out.println(createSql(sql,obj)); } //简单自动拼接SQL语句 public static String createSql(String sql, Object pargams[]) { for (int i = 0; i < pargams.length; i++) { Pattern p = Pattern.compile("\\?"); Matcher m = p.matcher(sql); if (pargams[i] instanceof Integer) { sql = m.replaceFirst(String.valueOf((int) pargams[i])); } else if (pargams[i] instanceof Long) { sql = m.replaceFirst(String.valueOf((Long) pargams[i])); } else if (pargams[i] instanceof Float) { sql = m.replaceFirst(String.valueOf((Float) pargams[i])); } else if (pargams[i] instanceof Double) { sql = m.replaceFirst(String.valueOf((Double) pargams[i])); } else { sql = m.replaceFirst("'" + (String) pargams[i] + "'"); } } return sql; } //简单示例 public static String testPrintSQL(String worknum, int missionKindId,int missionKindDetailsId){ String sql = "SELECT rat.id,rat.sName,rat.dApplyDate,rat.tiRestType,rat.dStartDate,rat.dEndDate,rat.fInterval "+ "FROM restapplytbl rat "+ "WHERE rat.id IN"+ "("+ " SELECT rt.iRestApplyId "+ " FROM restprocesstbl rt "+ " WHERE rt.id IN"+ " ("+ " SELECT pmt.smissionid "+ " FROM pendingmissiontbl pmt "+ " WHERE pmt.imissionkindid="+missionKindId+ " AND pmt.imissionkinddetailsid="+missionKindDetailsId+ " AND pmt.smissionexecutor="+"'"+worknum+"'"+ " )"+ ")"; return sql; } }
其他参考:
LineNumberReader read = new LineNumberReader(new BufferedReader(new FileReader("D://a.txt"))); String line = read.readLine(); Matcher matcher = Pattern.compile("正则").matcher(line); matcher.useTransparentBounds(true).useAnchoringBounds(false); int pos = 0; int endPos = line.length(); while (pos < endPos) { matcher.region(pos, endPos); if (matcher.lookingAt()) { //line = line.replace(matcher.group(), "a"); //line = line.replaceAll(matcher.group(1), "20"); System.out.println(matcher); pos = matcher.end(); } } //System.out.println(line);