代码片段
public class MemberNumberUtil {private static List<String> ALPHA = Arrays.asList("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");public static void main(String[] args) {String a0001 = getMemberNumber("AZZ9999");System.out.println(a0001);}public static String getMemberNumber(String memberNumber){return test(memberNumber) ;}private static String test(String id){int LENGTH = 4 ;int max = 9999 ;String substring = id.substring(id.length()-4);String alpha = id.replace(substring,"");int parseInt = Integer.parseInt(substring);if(parseInt == max){// 字母晋级计算字母// 获取最后一位字母String aa = getAA(alpha);return aa +"0001" ;}else{parseInt +=1 ;String format = String.format("%s%0" + LENGTH + "d", alpha, parseInt);return format ;}}// 获取字母private static String getAA(String alpha){//获取最后一个字母String substring = alpha.substring(alpha.length() - 1);if(ALPHA.indexOf(substring) != ALPHA.size() -1){//说明不是Z// 索引+1String s = ALPHA.get(ALPHA.indexOf(substring) + 1);String substring1 = alpha.substring(0, alpha.length() - 1);if(StringUtils.isNotEmpty(substring1)){return substring1+s ;}return s ;}else{// 判断是否全部是ZPattern pattern1 = pile("[Z]*");Matcher matcher = pattern1.matcher(alpha);if(matcher.matches()){// 全是ZString replace = alpha.replace("Z", "A");return replace+"A" ;}// 说明最后一位是Z// AAZ => ABAboolean flag = false ;byte[] bytes = alpha.getBytes();for (int i = bytes.length-1;i>=0;i--) {String s = asciiToString(bytes[i] + "");if(ALPHA.indexOf(s) == ALPHA.size()-1){// 说明是Zflag = true ; // 判断下一个是否需要递增bytes[i] = 65 ;}else if(flag) {bytes[i] += 1 ;flag = false ;}}return new String(bytes) ;}}// ascii 转 Stringprivate static String asciiToString(String value){StringBuffer sbu = new StringBuffer();String[] chars = value.split(",");for (int i = 0; i < chars.length; i++) {sbu.append((char) Integer.parseInt(chars[i]));}return sbu.toString();}}