【问题标题】:String generator in Java [duplicate]Java中的字符串生成器[重复]
【发布时间】:2015-09-15 07:49:02
【问题描述】:

我需要生成随机字母数字字符串(5 或 6 个字符)才能将其放入特定字段。 任何人都可以为我提供解决方案吗? 已尝试堆栈上另一篇文章中描述的几种方法,但均未成功。

尝试过类似的方法:

public static String generateString(Random rng, String characters, int length)
{
    char[] text = new char[length];
    for (int i = 0; i < length; i++)
    {
        text[i] = characters.charAt(rng.nextInt(characters.length()));
    }
    return new String(text);
}

但不知道为什么 random 作为参数传递以及在调用方法时我应该为它提供什么

【问题讨论】:

  • 已经尝试了几种方法您能否发布您的尝试,并告诉我们什么不起作用,为什么,您期望什么以及发生了什么?

标签: java string generator


【解决方案1】:

由于您按照您的说法尝试了很多,我可以帮助您提供最简单的解决方案之一-

  1. 使用您选择的字符声明一个字符串。例如0..9..a..z..A..Z
  2. 有一个包含您想要生成的字符数的循环。例如如果你想要 5 个随机字符,你会得到类似for(int i = 0; i &lt; 5; i++)
  3. 对于每次迭代,使用步骤 1 中的字符串长度从步骤 1 中选择一个随机字符。

【讨论】:

  • 是的,只需手动写入每个字符。只有字母数字的你有 62 个字符要写,你可以忘记一个......
【解决方案2】:

这是一个示例代码:

private static final char[] VALID_CHARACTERS =
        "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456879".toCharArray();

public static String getRandomString( final int length ) {
    // Check input
    if( length <= 0 ) {
        return "";
    }
    // Generate string
    Random rand = new Random();
    char[] buffer = new char[length];
    for( int i = 0; i < length; ++i ) {
        buffer[i] = VALID_CHARACTERS[rand.nextInt( VALID_CHARACTERS.length )];
    }
    //
    return new String( buffer );
}

这个简单的方法使用一个有效字符常量,每次随机轮询一个字符以构建所需长度的字符串。

例如,要获取 10 个字符的字母数字字符串,您可以这样调用该方法:

getRandomString( 10 );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 2013-08-29
    • 2021-06-20
    • 1970-01-01
    • 2015-08-16
    • 2012-07-22
    • 2017-04-05
    相关资源
    最近更新 更多