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

Posted 花生福

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了输入开始号和数量批量生成编号相关的知识,希望对你有一定的参考价值。

 

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

 

 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     }

 

以上是关于输入开始号和数量批量生成编号的主要内容,如果未能解决你的问题,请参考以下文章

SQL SERVER 批量生成编号

orcad元件属性批量修改

Word 图片表格自动编号交叉引用批量更改图片标题格式生成图录和表录

wps自动编码怎么设置

为啥尽管源代码没有变化,但从一个系统到另一个系统的片段数量却有很大差异?

Jungle Roads——最小生成树