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

标签 java string random

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

这个不错:

String str = Long.toHexString(Double.doubleToLongBits(Math.random()));

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

还有一个选项:如何使这个字符串唯一?

最佳答案

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

String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

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

Random random = new Random();
alphabet.charAt(random.nextInt(alphabet.length()));

重复此操作 n 次,其中 n 是您的自定义长度,并将该字符附加到字符串。

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

放在一起,这看起来像:

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();
}

关于java - 如何在java中生成自定义长度的随机字母数字字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38701632/

相关文章:

java - 从servlet调用jsp文件

c - 从文件中获取数据并在每次新行开始时打印出来

c++ - 为什么我们不能使用整数指针声明一个数字数组

java - 在 Jasper Report 的表中显示 JSON 数组

java - Java 线程什么时候处于 Activity 状态?

java - spring 表单标签具有默认值

c - 在 C 中找到字符最右边的出现?

swift - 随机化字典中的值并在标签中显示它们 SWIFT

algorithm - 如何随机生成一条窄路径?

java - 为什么我随机选择的数字的输出包含重复项?