前端会传入一个随意制定的编号,由随意字符与数值组成,需要只是后面数值加1其他不变,
对应方法:
public static String addOneToLastNumber(String inputStr) {
if (StringUtils.isBlank(inputStr)) {
return StringUtils.EMPTY;
}
StringBuilder result = new StringBuilder();
int i = inputStr.length() - 1;
while (i >= 0 && Character.isDigit(inputStr.charAt(i))) {
result.insert(0, inputStr.charAt(i));
i--;
}
if (result.length() > 0) {
int length = result.length();
// 处理连续的 '0'
while (result.length() > 1 && result.charAt(0) == '0') {
result.deleteCharAt(0);
}
BigInteger lastNumber = new BigInteger(result.toString());
String prefix = inputStr.substring(0, i + 1);
// 增加数字 1
lastNumber = lastNumber.add(BigInteger.ONE);
String incrementedStr = String.format("%0" + length + "d", lastNumber);
return prefix + incrementedStr;
} else {
return inputStr;
}
}
测试示例:
public static void main(String[] args) {
System.out.println(addOneToLastNumber("Z45E99"));
System.out.println(addOneToLastNumber("Z45E0001"));
System.out.println(addOneToLastNumber("Z45E1001"));
}
最终输出:
Z45E100
Z45E0002
Z45E1002