如何在java中生成自定义长度的随机字母数字字符串?

San*_*San 3 java string random

最简单的方法是什么?尽量减少任何进口。

这个不错:

String str = Long.toHexString(Double.doubleToLongBits(Math.random()));
Run Code Online (Sandbox Code Playgroud)

但这并不完美,例如它使自定义长度变得复杂。

还有一个选项:如何使这个 String 独一无二?

小智 5

创建可以包含在字符串中的字符的字符串:

String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
Run Code Online (Sandbox Code Playgroud)

使用 Random 类生成一个整数,并使用它从 String 中获取一个随机字符。

Random random = new Random();
alphabet.charAt(random.nextInt(alphabet.length()));
Run Code Online (Sandbox Code Playgroud)

这样做 n 次,其中 n 是您的自定义长度,并将该字符附加到一个字符串。

StringBuilder builder = new StringBuilder(n);
for (int i = 0; i < n; i++) {
    builder.append(/* The generated character */);
}
Run Code Online (Sandbox Code Playgroud)

总之,这可能看起来像:

private static final String ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

public String generateString(int length) {
    Random random = new Random();
    StringBuilder builder = new StringBuilder(length);

    for (int i = 0; i < length; i++) {
        builder.append(ALPHABET.charAt(random.nextInt(ALPHABET.length())));
    }

    return builder.toString();
}
Run Code Online (Sandbox Code Playgroud)