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

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

 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
原文地址:https://www.cnblogs.com/zh-1721342390/p/8276898.html