我想生成具有此表单的随机字符串
[A-ZA-Z0-9] {5,10}
我不知道该怎么做,我应该使用正则表达式还是随机函数?
答案 0 :(得分:1)
您不能使用正则表达式(在Java中)来生成事物。
您需要使用“随机”数字生成器(例如Random
类)来生成随机数字(在5到10之间)的随机字符(在指定的集合中)。事实上,Java提供了更多而不是一个发电机...取决于随机性的重要性。 (Random
类使用简单的伪随机数字生成器算法,它产生的数字是可预测的......)
我怀疑这是一次“学习练习”所以我不会提供代码。 (如果不是学习练习,你应该有能力自己写作......)
答案 1 :(得分:1)
在这种情况下,我坚持使用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
注意,如果您不习惯使用第三方库,则可以使用多种库。
答案 2 :(得分:0)
你可以使用RandomStringUtils.randomAlphanumeric(int count) 在Apache的commons-lang库中找到 并且每次(从5到10)指定不同的计数参数
答案 3 :(得分:0)
无法使用正则表达式生成随机字符串。正则表达式是指定和识别文本,字符和单词的模式的方式。您可以使用以下代码生成随机字符串。
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;
}