zoukankan      html  css  js  c++  java
  • 利用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 同意,不得擅自转载本文,否则后果自负
  • 相关阅读:
    使用 Web 服务 为 ECS Linux 实例配置网站及绑定域名
    部署 LAMP
    PHP与MYSQL事务处理
    centos6 yum 安装nginx 不成功解决办法
    5.5版本以上”No input file specified“问题解决
    php访问url的四种方式
    mysql索引总结----mysql 索引类型以及创建
    承诺,项目管理中的大杀器
    什么叫工作到位?
    Java中注解Annotation的定义、使用、解析
  • 原文地址:https://www.cnblogs.com/xin1006/p/4077329.html
Copyright © 2011-2022 走看看