package com.taiping.test;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
public class Test12 {
/**
* 生成永不重復的訂單號
* @param startLetter 訂單號開頭字符串
* @param size 訂單號中隨機的大寫字母個數
* @return
*/
public static String createOrderNo(String startLetter,int size){
String orderNo = null;
Date nowDate = new Date();
Random random = new Random();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
//生成兩位大寫字母
String keyArr = randomLetter(size);
String fourRandom = random.nextInt(9999) + "";
int randLength = fourRandom.length();
//四位隨機數,不足四位的補0
if(fourRandom.length()<4){//不足四位的隨機數補充0
for(int i=1; i<=4-randLength; i++){
fourRandom = '0' + fourRandom;
}
}
orderNo="NS"+keyArr+sdf.format(nowDate)+fourRandom;
return orderNo;
}
/**
* 生成大寫字母
* @param size
* @return
*/
public static String randomLetter(int size){
String keyArr= "";
char key = 0;
boolean[] flag=new boolean[26]; //定義一個Boolean型數組,用來除去重復值
for(int i=0;i
Random rand=new Random();
int index;
do{
index=rand.nextInt(26); //隨機生成0-25的數字并賦值給index
}while(flag[index]); //判斷flag值是否為true,如果為true則重新為index賦值
key=(char) (index+65); //大寫字母的ASCII值為65-90,所以給index的值加上65,使其符合大寫字母的ASCII值區間
flag[index]=true; //讓對應的flag值為true
keyArr +=key;
}
return keyArr;
}
/**
* 測試
* @param args
*/
public static void main(String[] args) {
System.out.println(createOrderNo("ND",2));
// NSBP202102041552086341
}
}
標簽:java,String,永不,訂單號,SimpleDateFormat,Java,fourRandom,size
來源: https://www.cnblogs.com/sinosoft/p/14373070.html