1. 程式人生 > >指定位數的純數字、純字母的隨機字串生成工具

指定位數的純數字、純字母的隨機字串生成工具

這個工具類需要依賴common-lang3,可以實現指定位數的純數字、純字母的隨機字串生成,還可以自定義種子,根據您自定義的種子生成需要的隨機字串,原始碼如下:

import org.apache.commons.lang3.RandomUtils;

/**
 * 隨機數工具類
 * @author vic_miao
 * 2018-7-24 21:00:50
 */
public final class RandomUtil {
    
    private final static String  KEYSTR = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
    private final static String  KEYNUM = "0123456789";
    private final static int  KEYLENGTH = 6; 
    
	/**
	 * 獲取指定位數的隨機數(整數)
	 * @param num
	 * @return
	 */
	public static String getRandomNum(int num){
		String random = getRandom(KEYNUM, num);
		return random;
	}
	
	/**
	 * 獲取指定位數的隨機數(字串)
	 * @param num
	 * @return
	 */
	public static String getRandomString(int num){
	    String random = getRandom(KEYSTR, num);
	    return random;
	}
	
	/**
	 * 根據傳入的種子獲取隨機字串
	 * @param key  種子(預設為字母+數字混合)
	 * @return
	 */
	public static String getRandom(String key){
	    if(StringUtils.isEmpty(key)){
	        key = KEYSTR;
	    }
	    String random = getRandom(key,KEYLENGTH);
       return random;
	}
	
	/**
	 * 根據傳入的種子獲取指定長度的隨機字串
	 * @param key    種子(預設為字母+數字混合)
	 * @param length  長度
	 * @return
	 */
	public static String getRandom(String key,int length){
	    if(StringUtils.isEmpty(key)){
	        key = KEYSTR + KEYNUM;
	    }
	    StringBuilder sb = new StringBuilder();
	    for (int i=0;i<length;i++){
	        int ran = RandomUtils.nextInt(0,key.length());
	        sb.append(String.valueOf(ran));
	    }
	    return sb.toString();
	}
}