该随笔为开发笔记
今天在公司接手了一个项目,在看该项目老代码时,发现上一位大佬写的随机取一串字符串还不错,在此做一次开发笔记
在他的基础上我做了点改动,但是原理一样
/** * 随机取一段字符串方法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; }
以上就为本次的开发笔记