/**
     * 上送终端编号的后两位生成规则  总共可以生成 (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. 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——解码篇:(一)用ffmpeg解码视频

    一.概述 myRTSPClient(RTSPClient)获取音视频数据之后,接下来的工作便是将音视频数据交给解码器去解码(ffmpeg),ffmpeg解码之后于是便有了呈现在终端用户(USER)面前 ...

  2. easyUI datagrid 列宽自适应(简单 图解)(转)

    响应数据格式: easyUI在html代码中结构: 发现了什么没有,我们的表头其实是一个td在td中有一个属性field那么我们就可以获得了; 以下就是自适应代码: //添加事件 function c ...

  3. JSON异步及跨域

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. CNAME关联githubPage域名及中文域名,创建个人网站

    对于前端开发来说,部署一个自己的个人网站部署服务器等比较麻烦,如果只是做静态页面的展示GitHubPage完全够用,而且有300M免费的空间,完全满足需求. 首先你要有GitHubPage项目,具体怎 ...

  5. Ecshop商品描述上传中文名图片无法显示解决方法

    在后台上传商品图片的时候,如果你选择一个中文名称的图片,那么上传后会产生乱码,导致图片显示不出来. 下面说一种解决办法:使用"年月日时分秒 + 6个随机字符"做为文件名,如 201 ...

  6. 1_NAT模式和桥接模式下的网络配置

    相信当你看到这篇文章时,你一定对linux的桥接模式和NAT模式有所了解,所以你应该是能看懂这篇文件的,希望对你有所帮助,figthing    ! 一.桥接模式:虚拟机和主机是连在同一个路由下的. ...

  7. Openfire分析之一:Openfire与XMPP协议

     引言 上帝说,要有光,于是就有了光. 有点玄. 如果将时光回溯无数岁月,到几百万年的蛮荒时代,人类史上第一次发生信息交换,会是什么样子?是转一下脑袋,还是眨一下眼? 但不管是什么形式,于是有了信息, ...

  8. JAVA中反射机制五(java.lang.reflect包)

    一.简介 java.lang.reflect包提供了用于获取类和对象的反射信息的类和接口.反射API允许对程序访问有关加载类的字段,方法和构造函数的信息进行编程访问.它允许在安全限制内使用反射的字段, ...

  9. 一次由SELinux引起的ssh公钥认证失败问题

    一直使用CentOS作为服务器系统,平时装完系统以后都是建立publickey认证机制,然后关闭密码认证.原本是一件轻车熟路毫无压力的事情,不想前日新装一台机器按照正常配置以后居然使用publicke ...

  10. MPLS LDP随堂笔记2

    前一天排错 Acl 1 匹配所有ospf的数据包 (目的 ospf建立邻居关系 传递路由条目) 2 放行UDP报文 让LDP邻居能互相收发HELLO包 4 放行TCP报文 让LDP邻居能够建立TCP会 ...