/** * 上送终端编号的后两位生成规则 总共可以生成 (36*36-1)1295个编号 * 01...09 0A...0Z * 10...19 1A...1Z * ............... * A0...A9 AA...AZ * ............... * Z0...Z9 ZA...ZZ */ public String generateNumber(String number){ String ret=number.substring(0,number.length()-2); //取前半部分 number=number.substring(number.length()-2); //取最后两位 // 取第一个字符 char ch1=number.charAt(0); char ch2=number.charAt(1); //生成第二个字符串 if(number.equals("ZZ")){ //达到上限 ZZ,不使用生成规则生成 return null; } if(ch2<'Z'){ //因为9的下一个字母是A if(ch2=='9'){ ch2='A'; }else{ ch2+=1; } ret=ret+""+ch1+ch2; }else{ //第一个字符加1;第二个字符为0 if(ch1=='9'){ ch1='A'; }else{ ch1+=1; } ret=ret+""+ch1+0; } return ret; }
public static void main(String[] args){ String[] arr={"01","09","0A","0Y","0Z","90","99","9B","9Z","A0","AZ","Z0","ZY","ZZ"}; for(String arr1:arr){ System.out.println("--->:"+test(arr1)); } }
/** * 生成上送终端编号的后两位规则 总共可以生成 (62*62-1)3843个编号 * 01...09 0A...0Z 0a...0z * 10...19 1A...1Z 1a...1z * ....................... * A0...A9 AA...AZ Aa...Az * ....................... * Z0...Z9 ZA...ZZ Za...Zz * a0...a9 aA...aZ aa...az * ....................... * z0...z9 zA...zZ za...zz */ public String generateNumber(String number){ String ret=number.substring(0,number.length()-2); //取前半部分 number=number.substring(number.length()-2); //取最后两位 // 取第一个字符 char ch1=number.charAt(0); char ch2=number.charAt(1); //生成第二个字符串 if(number.equals("zz")){ //达到上限 zz,不使用生成规则生成 return null; } if(ch2<'z'){ //因为9的下一个字母是A if(ch2=='9'){ ch2='A'; } else if(ch2=='Z'){ ch2='a'; }else{ ch2+=1; } ret=ret+""+ch1+ch2; }else{ //第一个字符加1;第二个字符为0 if(ch1=='9'){ ch1='A'; }else if(ch1=='Z'){ ch1='a'; }else{ ch1+=1; } ret=ret+""+ch1+0; } return ret; }