随机生成六位字符的验证码。
firstCode生成六位字符,无特殊字符要求
secondCode生成的验证码中有一个随机数字和五个字母,数字可以出现在任意位置。
package hello.first.ten.test2;
import java.util.ArrayList;
import java.util.Random;
public class yanZhenMa {
public static void main(String[] args) {
//用以生成随机验证码
String firstCode = firstCode();
System.out.println(firstCode);
String secondCode = secondCode();
System.out.println(secondCode);
}
private static String secondCode() {
//六位随机验证码无特殊要求,数字和字母的组合即可
ArrayList<Character> code = new ArrayList<>();
for (int i = 0; i < 26; i++) {
code.add((char)('a'+i));
code.add((char)('A'+i));
}
for (int i = 0; i < 10; i++) {
code.add((char)('0'+i));
}
StringBuilder sb = new StringBuilder();
Random r = new Random();
for (int i = 0; i < 6; i++) {
//在26+26+10中随机选取6个数作为下标,获取code集合中的字母做验证码
char c = code.get(r.nextInt(code.size()));
sb.append(c);
}
return sb.toString();//用toString方法转为字符串
}
private static String firstCode() {
ArrayList<Character> code = new ArrayList<>();
StringBuilder sb = new StringBuilder();
//把字母添加到code集合中
for (int i = 0; i < 26; i++) {
code.add((char)('a'+i));
code.add((char)('A'+i));
}
//生成五个随机字母
Random rs = new Random();
for (int i = 0; i < 5; i++) {
char c = code.get(rs.nextInt(code.size()));
sb.append(c);
}
int num = rs.nextInt(10);//生成一个随机数
int rd = rs.nextInt(6);//生成随机数用于交换位置
sb.append(num);
//先从StringBulider转为String类型,再调用toCharArray方法转为字符数组
char [] cr = sb.toString().toCharArray();
//将最后插入的数字和随机位置的字母交换位置
char temp = cr[5];
cr[5] = cr[rd];
cr[rd] = temp;
return sb.substring(0);//用substring返回字符串
}
}
做验证码验证操作时可以根据是否忽略大小写调用不同的方法。
//忽略大小写
code.equalsIgnoreCase(firstCode);
//不忽略大小写
code.equals(secondCode);