[分享]自定义格式生成随机HASH

ken_cq 2012-01-10 11:00:02

import java.util.Random;

/**
*
* <p>
* 描述:此类用于获取随机字符串
* </p>
* <p>
* 时间:2009-9-16
* </p>
*
* @author 游陈其
* @version 1.0
*/
public class RandomStringUtil {

/**
* 取随机字符串
*
* @param length
* 返回随机字符串的长度
* @param type
* 要取的字符串类型:
* i、取数字
* l、取小写字母
* u、取大写字母
* s、取特殊字符
* @return String 随机字符串
*/
public static String getRandomString(int length, String type) {
String allStr = 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();
}




private static final String splitStr = " "; // 分割符

// 取数字字符串 用 splitStr 分割
private static 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 static 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 static 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 static 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 static String getString(String type) {
StringBuffer pstr = new StringBuffer();
if (type.length() > 0) {
if (type.indexOf('i') != -1)
pstr.append(getNumberString());
if (type.indexOf('l') != -1)
pstr.append(getLowercase());
if (type.indexOf('u') != -1)
pstr.append(getUppercase());
if (type.indexOf('s') != -1)
pstr.append(getSpecialString());

}
return pstr.toString();
}



// 测试
public static void main(String[] args) {
System.out.println(RandomStringUtil.getRandomString(18, "ilu"));
}

}
...全文
71 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧