我想生成具有这种形式的随机字符串
[A-Za-z0-9]{5,10}
我不知道该怎么做,我应该使用正则表达式还是随机函数?
您不能使用正则表达式(在 Java 中)来生成内容。
您需要使用“随机”数生成器(例如Random
类)来生成随机字符(在指定的集合中)的随机数(5 到 10 之间)。事实上,Java 提供了多个生成器......取决于随机性有多重要。(Random
该类使用简单的伪随机数生成器算法,它产生的数字是相当可预测的......)
我怀疑这是一个“学习练习”,所以我不会提供代码。(如果这不是一个学习练习,你应该有能力自己写它......)
在这种情况下,我会坚持使用 Java 解决方案,类似于:
private String allowedChars = "abcdefghijklmnopqrstuvwxyzABCDEFGRHIJKLMNOPQRSTUVWXYZ0123456789";
public String getRandomValue(int min, int max) {
Random random = new Random();
int length = random.nextInt(max - min + 1) + min;
StringBuilder sb = new StringBuilder();
for(int i = 0; i < length; i++) {
sb.append(allowedChars.charAt(random.nextInt(allowedChars.length())));
}
return sb.toString();
}
你可以用getRandomValue(5, 10);
我没有尝试过这段代码,因为我没有可用的 IDE
请注意,如果您不反对使用第三方库,有很多可用的。
您可以使用 Apache 的 commons-lang 库中的 RandomStringUtils.randomAlphanumeric(int count) 并每次指定不同的计数参数(从 5 到 10)
它不可能使用正则表达式生成随机字符串。正则表达式是指定和识别文本、字符和单词的模式的方法。您可以使用以下代码生成随机字符串。
public static String createRandomString(int length)
{
String randomString = "";
String lookup[] = null;
int upperBound = 0;
Random random = new Random();
lookup = new String[] { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
upperBound = 36;
for (int i = 0; i < length; i++)
{
randomString = randomString + lookup[random.nextInt(upperBound)];
}
return randomString;
}