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

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

 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     }

原文地址:https://www.cnblogs.com/zh-1721342390/p/8276898.html

时间: 2024-10-09 08:00:57

输入开始号和数量批量生成编号的相关文章

SQL SERVER 批量生成编号

开始: 在testing中,为了模拟orders,有个要求给数据库dba,如何通过后台数据库脚本快速批量生成orders. 分析 站在数据库角度,批量生成orders,也就是批量生成表中的行数据. sql中,通过cross join 可以把两个table (如 A ,B )组合,形成一个笛卡尔积,如图1 图1 如果,对图1的组合结果,进行一次迭代组合,那么就可以得到一个16行的结果,如图2: 图2 在sql sever 中,通过下面的sql语句分析需要A, B表组合,迭代多少次可以能生成上百万行

系统中生成编号/单号问题的实现方案讨论

应用场景 场景:对于大多数电商系统或财务系统来说,系统中的单号一般都不是从1开始的自增数字,而是一串有一定意义的字符串序列. 而往往这样的单号是要全局唯一的,不可重复. 那么,每次新增订单记录时,这个单号就要按照指定的规则来生成. 常见的订单号规则是字母前缀+日期+时间+定长的数字,如DD201610201559060001(format:XXYYYYMMDDHHmmssNNNN),PZ16102015000012(format:XXYYMMDDHHNNNNNN) 常见方案... 实现这样的场景

通过java来批量生成身份证号

通过java来批量生成身份证号,方便来测试程序. package com.diyvc.controller.user; import java.util.Calendar; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class IdCardGenerator { public static final Map<Stri

mysql 进行update时,要更新的字段中有单引号或者双引号导致不能批量生成sql的问题

前言 将数据从一张表迁移到另外一张表的过程中,通过mysql的concat方法批量生成sql时遇到了一个问题,即进行UPDATE更新操作时如果原表中的字段中包含单引号'或者双引号",那么就会生成不正确的update语句. 原因当然很简单因为update table set xxx = 'content'时content一般由英文单引号'或者双引号"包裹起来,使用单引号较多. 如果content中包含单引号'时我们需要对单引号'进行转义或者将content用双引号括起来,这样双引号&qu

R8&mdash;批量生成文件夹,批量读取文件夹名称+R文件管理系统操作函数

一. 批量生成文件夹,批量读取文件夹名称 今日,工作中遇到这样一个问题:boss给我们提供了200多家公司的ID代码(如6007.7920等),需要根据这些ID号去搜索下载新闻,从而将下载到的新闻存到以公司ID生成的指定文件夹下!所以第一个问题就是200多个公司,不可能每一次下载,都要去点击:新建文件夹,然后对文件夹命名,too boring and monotonous.嘿嘿,幸好有R的陪伴! let's do it,来看看R如何完成这些工作! 主要用到两个函数 一. dir.create-生

简易发号SQL,可用于生成指定前缀自增序列,如订单号,生成优惠券码等

需求1:订单号要求唯一.长度不太长.自增.但不能通过早上订单号和晚上订单号相减推算出平台大概一天的单量 需求2:要求生成10w张优惠券,要求券码唯一.不能太长,不能轻易猜测出其他券码 根据这些需求提供一个简单的数据库发号的sql来满足上面的需求,介绍如下 Increments表设计两个字段,Prefix和MaxNum,不需要设计主键和聚集索引,在Prefix上建立唯一索引,可Include[MaxNum]字段,这样查询时可以保证索引覆盖 将前缀和数据拼接的服务由应用来提供,数据库自负责拿到增加后

使用zxing批量生成二维码立牌

使用zxing批量在做好的立牌背景图的指定位置上,把指定的文本内容(链接地址.文本等)生成二维码并放在该位置, 最后加上立牌编号. 步骤: 1).做好背景图,如下图: 2).生成二维码BufferedImage对象.代码如下: /** * * @Title: toBufferedImage * @Description: 把文本转化成二维码图片对象 * @param text * 二维码内容 * @param width * 二维码高度 * @param height * 二位宽度 * @par

使用html2canvas实现批量生成条形码

/*前台代码*/ 1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="GenerateCodeBar.aspx.cs" 2 Inherits="CodeBar_GenerateCodeBar" EnableEventValidation="false" %> 3 4 <!DOCTYPE html PUBLIC "-/

[转]黄聪:如何使用CodeSmith批量生成代码

本文转自:http://www.cnblogs.com/huangcong/archive/2010/06/14/1758201.html 在上一篇我们已经用PowerDesigner创建好了需要的测试数据库,下面就可以开始用它完成批量代码生成的工作啦. 下面我会一步步的解释如何用CodeSmith实现预期的结果的,事先声明一下,在此只做一个简单的Demo,并不详细的讲解CodeSmith各个强大的功能,有兴趣的朋友可以打开CodeSmith的帮助文档了解.我只做个抛砖引玉,希望能激起大家更多思