• 输入开始号和数量批量生成编号


    最近做优惠券的系统,需要通过开始编码和数量批量生成编码。

     1 /**
     2      * 编号字符串拆分
     3      * @param startCode 开始号码
     4      * @param num 数量
     5      * @return 修改后的新号码集合
     6      */
     7     public static List<String> trantfromList(String startCode,int num){
     8         startCode = startCode.trim();
     9         List<String> list = new ArrayList<String>();
    10         for(int i=0; i<num; i++){
    11             String a = trantfrom(startCode,"a");//字母
    12             String n = trantfrom(startCode,"n");//数字
    13             long newN = Long.parseLong(n)+i;
    14             String newStr = replenish(startCode,a+newN,a,newN);
    15             list.add(newStr);
    16         }
    17         return list;
    18     }

    编号进行拆分,分成编码头和数字:

     1 /**
     2      * 编号字符串拆分
     3      * @param code 编号
     4      * @param flag 标识
     5      * @return
     6      */
     7     public static String trantfrom(String code,String flag){
     8         String letter = "^[A-Za-z]+$";
     9         code = code.trim();
    10         if("a".equals(flag)){//取字母
    11             for(int i=code.length()-1; i>=0; i--){
    12                 if(code.substring(i, i+1).matches(letter)){
    13                     return code.substring(0,i+1);
    14                 }
    15             }
    16             return "";
    17         }else if("n".equals(flag)){//取数字
    18             for(int i=code.length()-1; i>=0; i--){
    19                 if(code.substring(i, i+1).matches(letter)){
    20                     if(code.substring(i+1)!=null && !code.substring(i+1).isEmpty()){
    21                         return code.substring(i+1);
    22                     }else{
    23                         if(i==(code.length()-1)){
    24                             return "";
    25                         }
    26                     }
    27                 }
    28             }
    29             return code;
    30         }
    31         return "";
    32     }

    最后合成新的字符串:

     1 /**
     2      * 生成code
     3      * @param sNum 开始编号
     4      * @param str 编号字母头+(开始编号数字部分+i)
     5      * @param a 开始编号数字部分
     6      * @param l 当前生成code的数字部分(开始编号数字部分+i)
     7      * @return
     8      */
     9     public static String replenish(String sNum, String str, String a, long l) {
    10         String msg="";
    11         if(sNum.length()-str.length()>0){
    12             for(int i = 0;i<sNum.length()-str.length();i++){
    13                 msg = msg+"0";
    14             }
    15             return a+msg+String.valueOf(l);
    16         }else{
    17             return str;
    18         }
    19     }

    使用方法:

    1 public static void main(String[] args) {
    2         List<String> list = trantfromList("zk2018yy001",10);
    3         for(String s : list){
    4             System.out.println(s);
    5         }
    6     }

    输出结果:

    zk2018yy001
    zk2018yy002
    zk2018yy003
    zk2018yy004
    zk2018yy005
    zk2018yy006
    zk2018yy007
    zk2018yy008
    zk2018yy009
    zk2018yy010
  • 相关阅读:
    MyEclipse取消自动跳到Console窗口
    JAVA Socket超时浅析
    利用WireShark进行DNS协议分析
    SSL/TLS协议工作流程
    Linux下安装MySQL
    使用Java中的动态代理实现数据库连接池
    在Linux下安装和使用MySQL
    自省 另外一种python 生成随机在base36 之间的兑换码生成。
    python 时间转换相关
    关于utf8mb4的学习了解笔记
  • 原文地址:https://www.cnblogs.com/zh-1721342390/p/8276898.html
Copyright © 2020-2023  润新知