1. 程式人生 > >Java 隨機生成手機驗證碼工具類

Java 隨機生成手機驗證碼工具類

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


}