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 同意,不得擅自转载本文,否则后果自负
  • 相关阅读:
    hdu 5489——Removed Interval——————【删除一段区间后的LIS】
    ACdream 1431——Sum vs Product——————【dfs+剪枝】
    HDU 5496——Beauty of Sequence——————【考虑局部】
    HDU 2586——How far away ?——————【LCA模板题】
    在 Web 项目中应用 Apache Shiro
    被误解的 Node.js
    [置顶] 乔布斯的斯坦福演讲(双语)
    [置顶] 献给写作者的 Markdown 新手指南
    Linux 环境中从源代码编译安装 ReText 问题与解决
    基于 OSGi 的面向服务的组件编程
  • 原文地址:https://www.cnblogs.com/xin1006/p/4077329.html
Copyright © 2011-2022 走看看