java使用正则表达式生成一个字符串

时间:2013-05-01 11:12:25

标签: java regex random

我想生成具有此表单的随机字符串

  

[A-ZA-Z0-9] {5,10}

我不知道该怎么做,我应该使用正则表达式还是随机函数?

4 个答案:

答案 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)指定不同的计数参数

http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/RandomStringUtils.html#randomAlphanumeric%28int%29

答案 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;
    }