該隨筆為開發筆記
今天在公司接手了一個項目,在看該項目老代碼時,發現上一位大佬寫的隨機取一串字符串還不錯,在此做一次開發筆記
在他的基礎上我做了點改動,但是原理一樣
/** * 隨機取一段字符串方法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; }
以上就為本次的開發筆記