/**
* 将oldNumber字符串后面的数字加addNumber的数字
* @param oldNumber 字符串
* @param addNumber 递增
* @return 递增后字符串
*/
public static String stringNumberAdd(String oldNumber,int addNumber){
if(StringUtils.isBlank(oldNumber)){
throw new RuntimeException("该编号不符合规则,该数据为空:");
}
int lastCharIndex = -1;
for(int index = 0; index < oldNumber.length(); index++){
char c = oldNumber.charAt(index);
if(c < '0' || c > '9'){
lastCharIndex = index;
}
}
if(lastCharIndex == oldNumber.length() - 1){
throw new RuntimeException("该编号不符合规则,后面应该以数字结尾:"+oldNumber);
}
String numberStr = lastCharIndex == -1 ? oldNumber : oldNumber.substring(lastCharIndex+1);
String charStr = oldNumber.substring(0,lastCharIndex+1);
long longNumber = Long.parseLong(numberStr) + addNumber;
String codeAfter = String.valueOf(longNumber);
if(numberStr.length() > codeAfter.length()){
int minLength = numberStr.length() - codeAfter.length();
StringBuilder beforeChar = new StringBuilder();
for(int lengthIndex = 0; lengthIndex < minLength; lengthIndex++){
beforeChar.append("0");
}
codeAfter = beforeChar + codeAfter;
}
return charStr+codeAfter;
}
测试方法
@Test
public void testNumberStringAdd(){
String code = "afdasf00001";
String codeAfter = MyUtils.stringNumberAdd(code, 1);
Assert.assertEquals("afdasf00002",codeAfter);
String code2 = "3233afdasf0000132das09";
String codeAfter2 = MyUtils.stringNumberAdd(code2, 1);
Assert.assertEquals("3233afdasf0000132das10",codeAfter2);
String code3 = "afdasf0000132das99";
String codeAfter3 = MyUtils.stringNumberAdd(code3, 2);
Assert.assertEquals("afdasf0000132das101",codeAfter3);
}