概述
有时候编码不是数字,由数组字母组成,但是又需要有序递增。
代码Demo
附上ASCII码参考页面
https://tool.oschina.net/commons?type=4
需求:有一组长度不确定的编码,需要依次累加.每位取值范围是0-9A-Z。
到10的时候需要自动转成A
比如
- A000 -> A001
- A009->A00A
- A00Z->A010
我的做法是代码里直接转成ACII码直接累加
public static String addAndGetNext(String str){
Assert.notNull(str, "字符不能为空");
char[] str_chars = str.toCharArray();
int length = str_chars.length;
int currentIndex = length - 1;
indexCharAdd(str_chars, currentIndex);
return String.valueOf(str_chars);
}
public static void indexCharAdd(char[] str_chars, int index){
if(index < 0){
return;
}
char str_char = str_chars[index];
int str_chars_ascii = str_char + 1;
//在(57,65)这段范围里是特殊字符,累加后大于58小于65的的直接跳到字母A
if(str_chars_ascii > 57 && str_chars_ascii < 65){
str_chars_ascii = 65;
}
if(str_chars_ascii > 90){
str_chars_ascii = 48;
indexCharAdd(str_chars, index - 1);
}
str_chars[index] = (char) str_chars_ascii;
}
测试结果