• 利用ASCII码生成指定规则的字符串


        /**
         * 上送终端编号的后两位生成规则  总共可以生成 (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;
        }
    ----------- 赠人玫瑰,手有余香     如果本文对您有所帮助,动动手指扫一扫哟   么么哒 -----------


    未经作者 https://www.cnblogs.com/xin1006/ 梦相随1006 同意,不得擅自转载本文,否则后果自负
  • 相关阅读:
    【二分图】HEOI2012 朋友圈
    【转载】动态规划—各种 DP 优化
    【默哀】京阿尼纵火案一周年
    【暑假集训】HZOI2019 Luogu P1006 传纸条 二三四维解法
    【暑假集训】HZOI2019 水站 多种解法
    最小二乘法求线性回归方程
    51Nod 最大M子段和系列 V1 V2 V3
    【博弈论】51Nod 1534 棋子游戏
    【最短路】CF 938D Buy a Ticket
    51nod1524 最大子段和V2
  • 原文地址:https://www.cnblogs.com/xin1006/p/4077329.html
Copyright © 2020-2023  润新知