1. 程式人生 > >隨機產生任意位的字母數字組合

隨機產生任意位的字母數字組合

使用java.util.Random產生隨機字串,字串中必須包括字母(大寫或者小寫)和數字的組合,使用正則表示式進行驗證。

實現原始碼:

/**
	 * 產生字母和數字的隨機組合,長度為length
	 * @param length
	 * @return 一個字母和數字隨機組合的String型資料
	 */
	public static String getRandomNumAndChacters(int length){
		Random random = new Random();
		String str = null;
		do {
			str = new String();
			for (int i = 0; i < length; i++) {
				boolean b = random.nextBoolean();
				if(b){
					int choice = random.nextBoolean() ? 65 : 97;//隨機到65:大寫字母  97:小寫字母
					str += (char)(choice+random.nextInt(26));
				}else{
					str += String.valueOf(random.nextInt(10));
				}
			}
		} while (validate(str));//驗證是否為字母和數字的組合
		return str;
	}
	
	/**
	 * 驗證產生的隨機字母數字組合是否是純數字或者存字母
	 * @param str
	 * @return   true:純字母或者純數字組成;false:不是純字母或者純數字組成
	 */
	public static boolean validate(String str){
		Pattern pattern = Pattern.compile("^([0-9]+)|([A-Za-z]+)$");
		Matcher matcher = pattern.matcher(str);
		return matcher.matches();
	}