zoukankan      html  css  js  c++  java
  • 输入开始号和数量批量生成编号

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

     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
  • 相关阅读:
    让keep-alive不缓存
    vue tab echart始终显示100px解决办法
    加载图片失败显示默认图片
    element 文件上传传参数
    vue-cli axios 拦截器设置
    制作字体图标制作
    20道Java面试必考题
    Integer源码解析
    阿里P9架构师讲解从单机至亿级流量大型网站系统架构的演进过程
    代理详解
  • 原文地址:https://www.cnblogs.com/zh-1721342390/p/8276898.html
Copyright © 2011-2022 走看看