【问题标题】:How to generate a random alphanumeric string of a custom length in java?如何在java中生成自定义长度的随机字母数字字符串?
【发布时间】:2016-08-01 14:38:40
【问题描述】:

最简单的方法是什么?最小化任何导入。

这个不错:

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

但它并不完美,例如它与自定义长度复杂化。

还有一个选项:如何使这个字符串独一无二?

【问题讨论】:

  • 为什么不使用字符串处理函数?只需在您想要的范围内循环生成一个随机字符,然后将其连接到您正在构建的字符串上。另外,为什么要尽量减少进口?
  • 最小化导入没有奖品。它不会影响运行时间,甚至不会影响编译时间。
  • @hexafraction,是的,你是对的,你的方法是合理的。丹尼尔·M。谢谢,我会注意到的。但问题可能是应用难题。

标签: java string random


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    RandomStringUtils 来自 commons-lang。如果您不想导入,请查看其来源。

    【讨论】:

      猜你喜欢
      • 2018-01-25
      • 1970-01-01
      • 2021-04-05
      • 2013-08-06
      • 1970-01-01
      • 1970-01-01
      • 2017-09-09
      • 2010-09-08
      • 2023-03-26
      相关资源
      最近更新 更多