隨機生成一串字符串(java)


該隨筆為開發筆記


 

今天在公司接手了一個項目,在看該項目老代碼時,發現上一位大佬寫的隨機取一串字符串還不錯,在此做一次開發筆記

在他的基礎上我做了點改動,但是原理一樣

  /**
     * 隨機取一段字符串方法1
     * 可規定自己想從哪些字符中取
     * @author zk
     *@date: 2019年8月2日 下午5:00:04
     * @param str 字符串來源 如:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
     * @param length 取的長度
     * @return
     */
    public static String getstring1(String str, int length) {
        Random random=new Random();
        StringBuffer sb=new StringBuffer();
        for(int i=0;i<length;i++){
          int number=random.nextInt(str.length());//取一個0-str.length的數
          sb.append(str.charAt(number));//返回指定索引處的字符
        }
        return sb.toString();
    }

查閱了資料

再補充兩種方式:

 /**
     * 隨機取一段字符串方法2
     * 這個是用的ASCII的原理
     * @author zk
     *@date: 2019年8月2日 下午5:07:31
     * @param length 所需長度
     * @return
     */
    public static String getstring2(int length) {
        Random random=new Random();
        StringBuffer sb=new StringBuffer();
        for(int i=0;i<length;i++){
           int number=random.nextInt(3);
           long result=0;
           switch(number){
              case 0:
                  result=Math.round(Math.random()*25+65);//取一個隨機的ASCII碼,大寫字母
                  sb.append(String.valueOf((char)result));//轉字符存起來
                  break;
             case 1:
                 result=Math.round(Math.random()*25+97);//取一個隨機的ASCII碼,小寫字母
                 sb.append(String.valueOf((char)result));//轉字符存起來
                 break;
             case 2:     
                 sb.append(String.valueOf(new Random().nextInt(10)));//數字
                 break;
            }
         }
         return sb.toString();
    }
    
    /**
     *  隨機取一段字符串方法3
     *  org.apache.commons.lang包RandomStringUtils類randomAlphanumeric方法隨機生成一定長度的字符串
     * @author zk
     *@date: 2019年8月2日 下午5:11:48
     * @param length 所需長度
     * @return
     */
    public static String getstring3(int length) {
        String filename=RandomStringUtils.randomAlphanumeric(length);
        return filename;
    }

以上就為本次的開發筆記

 


免責聲明!

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



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