public static String generateStr(int length) {
StringBuilder sb = new StringBuilder();
Random random = new Random();
for (int i = 0; i < length; i++) {
String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num"; // 输出字母还是数字
if ("char".equalsIgnoreCase(charOrNum)) // 字符串
sb.append((char) (97 + random.nextInt(26)));//大写字母ASCII码97-122,小写字母ASCII码65-90
else if ("num".equalsIgnoreCase(charOrNum)) // 数字
sb.append(String.valueOf(random.nextInt(10)));//0-10
}
String returnStr = sb.toString();
if(isAllDigit(returnStr) || isAllLetter(returnStr))//全为字母或数字时重新生成
generateStr(length);
return sb.toString();
}
public static boolean isAllDigit(String str) {
return str.matches("[0-9]{1,}");
}
public static boolean isAllLetter(String str) {
return str.matches("[a-zA-Z]+");
}
public static void main(String[] args) {
for (int i = 0; i < 1000000; i++) {
System.err.println(generateStr(6));
}
}