/**
     * 上送终端编号的后两位生成规则  总共可以生成 (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;
    }

利用ASCII码生成指定规则的字符串的更多相关文章

  1. 利用ascii码生成26个英文字母

    <script> let a = ""; for (var i = 65; i < 91; i++) { a += String.fromCharCode(i); ...

  2. 随机生成指定长度字符字符串(C语言实现)

    相关函数 srand(), rand()头文件#include<stdlib.h> 定义函数 int rand(void) 函数说明 rand()会返回一随机数值,范围在0至RAND_MA ...

  3. julia生成指定格式的字符串.jl

    julia生成指定格式的字符串.jl """ julia生成指定格式的字符串.jl http://bbs.bathome.net/thread-39829-1-1.htm ...

  4. php随机生成指定长度的字符串 可以固定数字 字母 混合

    php 生成随机字符串 可以指定是纯数字 还是纯字母 或者混合的. 可以指定长度的. function rand_zifu($what,$number){ $string=''; for($i = 1 ...

  5. [Javascript]利用当前时间生成yyyymmddhhmmss这样的字符串

    function pad2(n) { return n < 10 ? '0' + n : n } function generateTimeReqestNumber() { var date = ...

  6. 字符串/16进制/ASCII码的转换

    1 /// <字符串转16进制格式,不够自动前面补零> 2 /// 假设文本框里面填写的是:01 02 03 04 05 06 3 /// Str获取的是01 02 03 04 05 06 ...

  7. 什么是ASCII码?

    ㈠定义 ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现 ...

  8. ASCII码(转)

    ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧 ...

  9. ASCII码

    ASCII(pronunciation: /ˈæski/ ASS-kee,American Standard Code for Information Interchange,美国信息交换标准代码)是 ...

随机推荐

  1. 第3天:CSS浮动、定位、表格、表单总结

    今天学的是浮动.定位.表格.表单等内容,这些是CSS中最容易混淆的知识,有许多小技巧在写代码过程中需要注意.下面是主要知识点: 一.float浮动1.块元素在一行显示2.内联元素支持宽高3.默认内容撑 ...

  2. linux 下 Fatal error: Class ‘mysqli’ not found in

    先试用这种方法 http://blog.csdn.net/u010429424/article/details/43063211 我不知道自己安装的php 没他们路径,所以用了以下这种方法处理,并且不 ...

  3. iOS项目之wifi局域网传输文件到iPhone的简单实现

    如今手机发展非常迅速,app的种类也琳琅满目,而自从有了4G网之后,手机流量也越来越不够用了.所以现在越来越多的app有了本地文件的管理功能,方便用户随意浏览手机文件的同时,也为用户节约了流量的使用. ...

  4. 非极大值抑制(Non-Maximum Suppression,NMS)

    概述 非极大值抑制(Non-Maximum Suppression,NMS),顾名思义就是抑制不是极大值的元素,可以理解为局部最大搜索.这个局部代表的是一个邻域,邻域有两个参数可变,一是邻域的维数,二 ...

  5. Java设计模式 (转)

    设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  6. InvalidateRect和UpdateWindow

    The UpdateWindow function updates the client area of the specified window by sending a WM_PAINT mess ...

  7. python -- 装饰器的高级应用

    装饰器和装饰器模式装饰器模式是面向对象的一种设计模式,支持将行为动态增加到已经存在的对象上.当装饰一个对象的时候,就表示独立与其他类实例对象,为该对象扩展了新的功能. python的装饰器不是装饰器模 ...

  8. 在Linux 环境下搭建 JDK 和 Tomcat

      在Linux 环境下搭建 JDK 和 Tomcat 参考地址:http://www.cnblogs.com/liulinghua90/p/4661424.html   [JDK安装] 1.首先下载 ...

  9. [2015-10-11]tfs2015 vs2013 配置持续集成

    今天刚配置完tfs2015+vs2013的持续集成(自动构建+自动发布),记录一下走过的坑. tfs2015和tfs build server是之前其他同事装的,略去不讲,列一下几个坑以及埋坑方法. ...

  10. SQL Server 2014 64位版本链接32位Oracle数据库

    问题背景: 刚进入公司不久的BI新手,最近接部门的一个交接项目,需要在SQL Server上通过openquery来获取Oracle数据库的数据.各种配置,各种设置折腾了一周之久.在此,将自己的问题解 ...