java 从String中匹配数字,并提取数字
方法如下:
private List<FieldList> GetTmpFieldsList(List<String> FieldsList,String tmptableName,String IndexName) { List<FieldList> maps = new ArrayList<>(); for(String field :FieldsList){ //必须包含传入的标识符,同时要包含数字 if(field.toLowerCase().contains(tmptableName.toLowerCase())){ FieldList e = new FieldList(); String [] fieldArray = field.split("\\.");//带数字的string field = field.replaceAll("\\_?\\d+", ""); //去掉下划线加数字 得有效的物理名 String [] fieldArray2 = field.split("\\."); //不带数字的string Pattern p = Pattern.compile("\\d+"); //得到字符串中的数字 Matcher m = p.matcher(fieldArray[1]); if(m.find()){ int key = Integer.parseInt(m.group()); e.setCaseValue(key); if(StringUtils.isEqual(fieldArray2[1], IndexName)){ //for BAT203 e.setField("CHECK_POSITION"); //項目物理名 }else{ e.setField(fieldArray2[1]); //項目物理名 } e.setFieldName(fieldArray[1]); //項目物理名別名 maps.add(e); } /**else{ 只有后面带数字的才可以 if(StringUtils.isEqual(fieldArray2[1],IndexName)){ //for BAT203 e.setField("CHECK_POSITION"); //項目物理名 }else{ e.setField(fieldArray2[1]); } e.setFieldName(fieldArray[1]); maps.add(e); }**/ } } //Add ACE商品マスタ.更新フラグ return maps; }