Java 如何隨機產生8位包含英文數字標點符號


java隨機生成8位密碼-包括數字、大小寫字母、特殊符號。

//返回隨機產生的8位數
public  String getRandomPassword(int len) {
    String result= this.makeRandomPassword(len);
    if (result.matches(".*[a-z]{1,}.*") && result.matches(".*[A-Z]{1,}.*") && result.matches(".*\\d{1,}.*") && result.matches(".*[~!@#$%^&*\\.?]{1,}.*")) {
    return result;
    }
    result = makeRandomPassword(len);
 }

  //產生8位隨機數
  public  String makeRandomPassword(int len){
   char charr[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890~!@#$%^&*.?".toCharArray();
   StringBuilder sb = new StringBuilder();
   Random r = new Random();
   for (int x = 0; x < len; ++x) {
   sb.append(charr[r.nextInt(charr.length)]);
   }
   return sb.toString();
   }

 完整的測試例子:

public class TestRandomNumber {
    public TestRandomNumber() {
    }

    public static void main(String[] args) {
        String randomNum = getRandomPassword(8);
        System.out.println(randomNum);
    }

    /**
     * 返回隨機產生的8位數
     */
    public static String getRandomPassword(int len) {
        String result = makeRandomPassword(len);
        if (result.matches(".*[a-z]{1,}.*") && result.matches(".*[A-Z]{1,}.*") && result.matches(".*\\d{1,}.*") &&
                result.matches(".*[~!@#$%^&*\\.?]{1,}.*")) {
            return result;
        }
        result = makeRandomPassword(len);
        return result;
    }

    /**
     * 產生8位隨機數
     *
     * @param len 長度
     * @return
     */
    public static String makeRandomPassword(int len) {
        char charr[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.".toCharArray();
        StringBuilder sb = new StringBuilder();
        Random r = new Random();
        for (int x = 0; x < len; ++x) {
            sb.append(charr[r.nextInt(charr.length)]);
        }
        return sb.toString();
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM