论坛首页 入门技术论坛

java 取随机字符串

浏览 3245 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-09-16  
package org.jinsheng.util;

import java.util.Random;

/**
 * org.jinsheng.util.RandomString.java
 * <p>
 * 描述:此类用于获取随机字符串
 * </p>
 * <p>
 * 时间:2009-9-16
 * </p>
 * 
 * @author jinsheng
 * @version 1.0
 */
public class RandomString
{
	private final String splitStr = " "; // 分割符

	// 取数字字符串 用 splitStr 分割
	private String getNumberString()
	{
		StringBuffer buf = new StringBuffer();
		for (int i = 0; i < 10; i++)
		{
			buf.append(String.valueOf(i));
			buf.append(splitStr);
		}
		return buf.toString();
	}

	// 取大写字母字符串 用 splitStr 分割
	private String getUppercase()
	{
		StringBuffer buf = new StringBuffer();
		for (int i = 0; i < 26; i++)
		{
			buf.append(String.valueOf((char) ('A' + i)));
			buf.append(splitStr);
		}
		return buf.toString();
	}

	// 取小写字母字符串 用 splitStr 分割
	private String getLowercase()
	{
		StringBuffer buf = new StringBuffer();
		for (int i = 0; i < 26; i++)
		{
			buf.append(String.valueOf((char) ('a' + i)));
			buf.append(splitStr);
		}
		return buf.toString();
	}

	// 取特殊字符串 用 splitStr 分割
	private String getSpecialString()
	{
		String str = "~@#$%^&*()_+|\\=-`";
		StringBuffer buf = new StringBuffer();
		for (int i = 0; i < str.length(); i++)
		{
			buf.append(str.substring(i, i + 1));
			buf.append(splitStr);
		}
		return buf.toString();
	}

	// 根据所取的字符串类型连接相应的字符串并返回
	private String getString(String type)
	{
		StringBuffer pstr = new StringBuffer();
		if (type.length() > 0)
		{
			if (type.indexOf('i') != -1)
				pstr.append(this.getNumberString());
			if (type.indexOf('l') != -1)
				pstr.append(this.getLowercase());
			if (type.indexOf('u') != -1)
				pstr.append(this.getUppercase());
			if (type.indexOf('s') != -1)
				pstr.append(this.getSpecialString());

		}
		return pstr.toString();
	}

	/**
	 * 取随机字符串
	 * 
	 * @param length
	 *            返回随机字符串的长度
	 * @param type
	 *            要取的字符串类型: 
	 *            i、取数字 
	 *            l、取小写字母 
	 *            u、取大写字母 
	 *            s、取特殊字符
	 * @return String 随机字符串
	 */
	public String getRandomString(int length, String type)
	{
		String allStr = this.getString(type);
		String[] arrStr = allStr.split(splitStr);
		StringBuffer pstr = new StringBuffer();
		if (length > 0)
		{
			for (int i = 0; i < length; i++)
			{
				pstr.append(arrStr[new Random().nextInt(arrStr.length)]);
			}
		}
		return pstr.toString();
	}

	// 测试
	public static void main(String[] args)
	{
		System.out.println("type=i:"
				+ new RandomString().getRandomString(10, "i"));
		System.out.println("type=il:"
				+ new RandomString().getRandomString(10, "il"));
		System.out.println("type=ilu:"
				+ new RandomString().getRandomString(10, "ilu"));
		System.out.println("type=ilus:"
				+ new RandomString().getRandomString(10, "ilus"));
		for (int i = 0; i < 100; i++)
			System.out.println("type=ilus:"
					+ new RandomString().getRandomString(10, "ilus"));
	}

}


最近无聊写了这么一个类,实现获取随机字符串的类,如果各位有什么高招请指教指教小弟,呵呵。
论坛首页 入门技术版

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