2

我想生成具有这种形式的随机字符串

[A-Za-z0-9]{5,10}

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

4

4 回答 4

1

您不能使用正则表达式(在 Java 中)来生成内容。

您需要使用“随机”数生成器(例如Random类)来生成随机字符(在指定的集合中)的随机数(5 到 10 之间)。事实上,Java 提供了多个生成器......取决于随机性有多重要。(Random该类使用简单的伪随机数生成器算法,它产生的数字是相当可预测的......)

我怀疑这是一个“学习练习”,所以我不会提供代码。(如果这不是一个学习练习,你应该有能力自己写它......)

于 2013-05-01T11:16:42.277 回答
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

请注意,如果您不反对使用第三方库,有很多可用的。

于 2013-05-01T11:20:39.517 回答
0

您可以使用 Apache 的 commons-lang 库中的 RandomStringUtils.randomAlphanumeric(int count) 并每次指定不同的计数参数(从 5 到 10)

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

于 2013-05-01T11:20:26.567 回答
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;
    }
于 2013-05-01T11:32:34.060 回答