论坛首页 入门技术论坛

产生随机字符串(a-z A-Z 0-9)

浏览 6337 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-09-25  

实现方法一:

public class RandomFileName {
	/**
	 * 产生一个随机的字符串
	 * 
	 * @param 字符串长度
	 * @return
	 */
	public static String getRandomString(int length) {
		String base = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
		Random random = new Random();
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < length; i++) {
			int number = random.nextInt(base.length());
			sb.append(base.charAt(number));
		}
		return sb.toString();
	}

	public static void main(String[] args) {
		System.out.println(RandomFileName.getRandomString(5));
	}
}

 实现方法二:

public class RandomFileName2 {
	/**
	 * 产生一个随机的字符串
	 * 
	 * @param 字符串长度
	 * @return
	 */
	public static String getRandomString(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);
					sb.append(String.valueOf((char)result));
					break;
				case 1:
					result = Math.round(Math.random()*25+97);
					sb.append(String.valueOf((char)result));
					break;
				case 2:
					sb.append(String.valueOf(new Random().nextInt(10)));
					break;
			}
		}
		return sb.toString();
	}
	
	public static void main(String[] args) {
		System.out.println(RandomFileName2.getRandomString(10));
	}
}
 

 

   发表时间:2009-09-29  
其实就是把一个随机数转成26*2+10=62进制
0 请登录后投票
   发表时间:2009-10-05  
这个随机字符串的生成类真不错,我发现可以把它加以改进,比如加上特殊字符,将传入的参数设置为16或更多,可以用于生成强密码。谢谢分享!
0 请登录后投票
   发表时间:2009-10-06  
读一个perl程序上来就可以了
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics