一个产生随机字符串的类

经常要用到java来产生随机字符串,感觉org.apache.commons.lang.RandomStringUtils还是不够用,比如不能按照指定格式来产生随机串,因此自己写了一个RandomString类,放在这里记录一下。源文件在用法简介的后面。

[b]一、用法简介:[/b]

//产生4位的,由数字和大写字母组成的随机字符串;
String s1=RandomString.get(4);

//产生5位的,由数字组成的随机字符串;
String s2=RandomString.getNum(5);

//产生6位的,由十六进制字符组成的随机字符串;
String s3=RandomString.getHex(6);

//产生如下格式的随机字符串“{E3-K91Z}”,“?”表示一个占位符;
String s4=RandomString.get("{??-????}");

//产生如下格式的随机字符串“Are you W5B?”,可以自己指定临时占位符,这里用“#”;
String s5=RandomString.get("Are you ###?",'#');

[b]二、源文件:[/b]

public class RandomString {
private static final String src_number = "0123456789";
private static final String src_lower = "abcdefghijklmnopqrstuvwxyz";
private static final String src_upper = src_lower.toUpperCase();
private static final String src_hex_lower = "0123456789abcdef";
private static final String src_hex_upper = src_hex_lower.toUpperCase();
private static final String esc_char = "?";

public static String get(int size) {
StringBuffer r = new StringBuffer(size);
String src = src_number + src_upper;
for (int i = 0; i < size; i++) {
r.append(getRandomChar(src));
}
return r.toString();
}

public static String get(String format) {
StringBuffer r = new StringBuffer(format.length());
String src = src_number + src_upper;
for (int i = 0; i < format.length(); i++) {
String curr = String.valueOf(format.charAt(i));
if (curr.equalsIgnoreCase(esc_char)) {
r.append(getRandomChar(src));
} else {
r.append(curr);
}
}
return r.toString();
}

public static String get(String format, char esc) {
StringBuffer r = new StringBuffer(format.length());
String src = src_number + src_upper;
for (int i = 0; i < format.length(); i++) {
String curr = String.valueOf(format.charAt(i));
if (curr.equalsIgnoreCase(String.valueOf(esc))) {
r.append(getRandomChar(src));
} else {
r.append(curr);
}
}
return r.toString();
}

public static String getNum(int size) {
StringBuffer r = new StringBuffer(size);
String src = src_number;
for (int i = 0; i < size; i++) {
r.append(getRandomChar(src));
}
return r.toString();
}

public static String getNum(String format) {
StringBuffer r = new StringBuffer(format.length());
String src = src_number;
for (int i = 0; i < format.length(); i++) {
String curr = String.valueOf(format.charAt(i));
if (curr.equalsIgnoreCase(esc_char)) {
r.append(getRandomChar(src));
} else {
r.append(curr);
}
}
return r.toString();
}

public static String getNum(String format, char esc) {
StringBuffer r = new StringBuffer(format.length());
String src = src_number;
for (int i = 0; i < format.length(); i++) {
String curr = String.valueOf(format.charAt(i));
if (curr.equalsIgnoreCase(String.valueOf(esc))) {
r.append(getRandomChar(src));
} else {
r.append(curr);
}
}
return r.toString();
}

public static String getHex(int size) {
StringBuffer r = new StringBuffer(size);
String src = src_hex_upper;
for (int i = 0; i < size; i++) {
r.append(getRandomChar(src));
}
return r.toString();
}

public static String getHex(String format) {
StringBuffer r = new StringBuffer(format.length());
String src = src_hex_upper;
for (int i = 0; i < format.length(); i++) {
String curr = String.valueOf(format.charAt(i));
if (curr.equalsIgnoreCase(esc_char)) {
r.append(getRandomChar(src));
} else {
r.append(curr);
}
}
return r.toString();
}

public static String getHex(String format, char esc) {
StringBuffer r = new StringBuffer(format.length());
String src = src_hex_upper;
for (int i = 0; i < format.length(); i++) {
String curr = String.valueOf(format.charAt(i));
if (curr.equalsIgnoreCase(String.valueOf(esc))) {
r.append(getRandomChar(src));
} else {
r.append(curr);
}
}
return r.toString();
}

private static final String getRandomChar(String src) {
if (null==src||"".equals(src)) {
return "";
}
return String.valueOf((src.charAt((int) (Math.random() * src.length()))));
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值