/**
     * 上送终端编号的后两位生成规则  总共可以生成 (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. mysql日期函数 当前日期 curdate() , 当前年 year(curdate()), 取date的年份 year(date) ,取date的月份 month(date)

    获取系统当前日期时间: sysdate() 获取系统当前日期:curdate() 获取系统当前时间:curtime() 获取给定日期的年份: year(date) 获取给定日期的月份:month(da ...

  2. Zepto源码分析(二)奇淫技巧总结

    Zepto源码分析(一)核心代码分析 Zepto源码分析(二)奇淫技巧总结 目录 * 前言 * 短路操作符 * 参数重载(参数个数重载) * 参数重载(参数类型重载) * CSS操作 * 获取属性值的 ...

  3. Microsoft Azure Storage Exployer使用指南

    概述 Microsoft Azure Storage Exployer 是微软官方推荐的一款管理Azure Storage 客户端工具,客户使用完全免费.支持Windows.Mac和Linux.用户使 ...

  4. python+selenium自动化软件测试(第8章) :多线程

    前戏:线程的基础 运行多个线程同时运行几个不同的程序类似,但具有以下优点:进程内共享多线程与主线程相同的数据空间,如果他们是独立的进程,可以共享信息或互相沟通更容易.线程有时称为轻量级进程,他们并不需 ...

  5. 【实验吧】逆向rev50

    a simple reverse view 解题链接: http://ctf5.shiyanbar.com/reverse/rev50/rev50 看了别人写的wp得知是挂载参数执行. 补充:gdb挂 ...

  6. jQuery实现鼠标滑过导航栏呈现不同的样式

    素材图片 源码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...

  7. iOS 微信支付流程详解

    背景 自微信支付.支付宝支付入世以来,移动端的支付日渐火热.虚拟货币有取代实体货币的趋向(这句纯属扯淡,不用管),支付在app开发中是一项基本的功能,有必要去掌握.从难易程度上讲,不管是微信支付还是支 ...

  8. Centos 7系统启动修复

    author:JevonWei 版权声明:原创作品 错误界面 这个错误界面应该为/boot文件损坏,故应该修复/boot和grub2 修复/boot及grub 1 . chroot /mnt/sysi ...

  9. Spark算子讲解(一)

    1:Zip算子 def zip[U](other: RDD[U])(implicit arg0: ClassTag[U]): RDD[(T, U)] 将两个RDD做zip操作,如果当两个RDD分区数目 ...

  10. java 8 总结 之lambda

    lambda表达式 目的:行为参数化 Lambda表达式是简洁地表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表.函数主体.返回类型,可能还有一个可以抛出的异常列表. Lambda的基本语法 ...