Java 隨機生成手機驗證碼工具類
阿新 • • 發佈:2018-12-07
package cn.it.feizi.until; import java.util.HashSet; import java.util.Iterator; import java.util.Random; import java.util.Set; public class PhoneCodeUntil { /** * 隨機生成字元 或 者數字 * @return */ private static String getRandom(){ String value = ""; Random random = new Random(); int gen = random.nextInt(2); String charOrNum = gen % 2 ==0 ? "char":"num"; if ("char".equals(charOrNum)) { //字元 int temp = random.nextInt(2)%2==0?65:97; int ascii = random.nextInt(26); value += (char)(ascii + temp); }else if ("num".equals(charOrNum)) { //是數字 value += String.valueOf(random.nextInt(10)); } return value; } /** * 隨機生成字串(包含字元和數字) * @param length 指定長度 * @return 返回set */ private static Set<String> getStrAndNum(int length) { Set<String> set = new HashSet<>(); for (int i = 0; i < length; i++) { String value = getRandom(); set.add(value); } //若生成的字串沒達到指定長度 繼續生成 if (set.size() < length) { String value = getRandom(); set.add(value); } return set; } /** * 存放在set中的字元組拼接成字串 * @param set * @return */ private static String printSet(Set set){ //列印set的方法 Iterator iterator = set.iterator(); String value = ""; while (iterator.hasNext()) { //String ele = (String) iterator.next(); value += (String)iterator.next(); } return value; } /** * 返回生成的隨機字串 * @param length 指定隨機字串長度 * @return 指定長度 大於零 返回指定長度隨機字元,小於等於零 返回null */ public static String getRandonString(int length){ String value= ""; if (length > 0) { //如果返回的字串小於指定長度 重新生成 if (value.length() < length) { Set<String> store = getStrAndNum(length); value = printSet(store); } return value; }else{ return value; } } }