"%06d" -----> 如果数字不够6位就补0
1. 方式1:
String regular = "D_ID_D056070";
int d = regular.lastIndexOf("_");
System.out.println(" _ 最后一次出现的位置" + d);
String comPrefix = regular.substring(0, d);
System.out.println("公共前缀部分" + comPrefix);
String strNum = regular.substring(d + 2, regular.length());
System.out.println("数字部分" + strNum);
int trailingNum = Integer.parseInt(strNum);
trailingNum++;
System.out.println("字符串的尾数部分" + trailingNum);
String fileType = "D";
// %06d -----> 如果数字不够6位就补0
String id = String.format(comPrefix + "_" + fileType + "%06d", trailingNum);
System.out.println(id);
结果:
2. 方式2:
String regular = "D_ID_D056070";
String s = strAddOne(regular);
System.out.println(s);
public static String strAddOne(String str) {
int d = str.lastIndexOf("D");
System.out.println(d);
String substring = str.substring(d + 1, str.length());
String beginStr = str.substring(0,d);
System.out.println(substring);
num = Integer.parseInt(substring);
System.out.println(num);
boolean b = false;//是否进1
ArrayList<String> list = new ArrayList<>();
list.add(beginStr);
list.add(substring);
for (int i = list.size() - 1; i >= 0; i--) {
String s = list.get(i);
if (Character.isDigit(s.toCharArray()[0])) {
int integer = Integer.parseInt(s);
if (integer == 9) {
list.set(i, "0");
b = true;
} else {
list.set(i, Integer.toString(++integer));
break;
}
} else {
//表示list.get(i) 不是数字
if (b) {
//进1 这会导致长度加一 请注意是否会超过数据库可存储长度
list.add(i + 1, "1");
}
//结束循环
break;
}
}
return StringUtils.join(list, "D0");
}