1. 程式人生 > >根據 電子券的生成規則 生成券號

根據 電子券的生成規則 生成券號

電子券號的生成規則


    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;
    }

 生成後的示例