遇到一个需求是需要自动升级物料的英文版本号
即:版本A的时候触发升级,变成版本B,B->C,Z->AA依次类推
整了一个自动升版方法,感觉思路不错,故记录
public static String getNextString(String input) {
// 将输入字符串中的所有空白字符替换为空字符串
input = input.replaceAll("\\s", "");
// 检查输入字符串是否为null、空或"null"
if (input == null || input.isEmpty() || input.equalsIgnoreCase("null")) {
return "A";
}
// 将输入字符串转换为大写
input = input.toUpperCase();
// 将输入字符串转换为字符数组
char[] chars = input.toCharArray();
// 获取数组中最后一个字符的索引
int lastIndex = chars.length - 1;
// 检查最后一个字符是否为'Z'
if (chars[lastIndex] == 'Z') {
// 如果是'Z',将其替换为'A'并将索引减一
chars[lastIndex] = 'A';
lastIndex--;
} else {
// 如果不是'Z',将最后一个字符加1并返回修改后的字符串
chars[lastIndex] = (char) (chars[lastIndex] + 1);
return String.valueOf(chars);
}
// 从最后一个索引开始向前遍历字符数组
for (int i = lastIndex; i >= 0; i--) {
// 检查当前字符是否为'Z'
if (chars[i] == 'Z') {
// 如果是'Z',将其替换为'A'
chars[i] = 'A';
} else {
// 如果不是'Z',将字符加1并返回修改后的字符串
chars[i] = (char) (chars[i] + 1);
return String.valueOf(chars);
}
}
// 如果所有字符都是'Z',在修改后的字符串前加上'A'并返回
return "A" + String.valueOf(chars);
}
得到的结果也是令人满意的