随机生成一串字符串(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;
    }

以上就为本次的开发笔记

原文地址:https://www.cnblogs.com/zktww/p/11289926.html