根據 電子券的生成規則 生成券號
阿新 • • 發佈:2019-02-01
電子券號的生成規則
public static void main(String[] args) { // 流水號位數 int serialNum = 10; // 起始位 int beginDigif = 2; // 字首 String prefixChar = "FN"; // 字首長度 int prefixCharSize = 0; if (DSHUtils.isNotEmpty(prefixChar)) { prefixCharSize = prefixChar.length(); } // 券號字尾 int endPrefixSize = 2; // 最近一次生成的券號 String lastStr = "FN000000000231"; // 補零位 StringBuilder zearStr = new StringBuilder(); // 券號字首 zearStr.append(prefixChar); // 如果沒有最近的券號,或者最近的券號規則變了 if (DSHUtils.isEmpty(lastStr) || lastStr.indexOf(prefixChar) == -1 || lastStr.length() != serialNum + prefixCharSize + endPrefixSize) { // 券號流水號 for (int i = 0; i < serialNum - 1; i++) { zearStr.append(0); } zearStr.append(beginDigif); } else { String lastStrNumString = lastStr.substring(prefixCharSize, lastStr.length() - endPrefixSize); // 券號流水號 int lastStrNum = Integer.valueOf(lastStrNumString) + 1; String prefixCharNum = String.valueOf(lastStrNum); if (prefixCharNum.length() < serialNum) { // 補零 for (int i = prefixCharNum.length(); i < serialNum; i++) { zearStr.append(0); } } zearStr.append(prefixCharNum); } // 券號字尾 if (endPrefixSize > 0) { String endPrefixNum = DSHUtils.getRandom(endPrefixSize); zearStr.append(endPrefixNum); } System.out.println(zearStr); }
java生成指定位數的隨機數
/** * 生成指定位數的隨機數 * @param length * @return */ public static String getRandom(int length){ String val = ""; Random random = new Random(); for (int i = 0; i < length; i++) { val += String.valueOf(random.nextInt(10)); } return val; }
生成後的示例