我需要生成随机的字母数字字符串(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);
}
但不知道为什么随机传递作为参数,我应该在调用方法
时为它提供什么答案 0 :(得分:2)
由于您按照您的说法尝试了很多,我可以帮助您解决最简单的解决方案之一 -
- 使用您选择的字符声明一个字符串。例如0..9..a..z..A..Z
- 拥有一个包含您想要生成的字符数的循环。例如如果你想要5个随机字符,你会得到
之类的东西for(int i = 0; i < 5; i++)
- 对于每次迭代,使用步骤1中的字符串长度从步骤1中选择一个随机字符。
醇>
答案 1 :(得分:1)
以下是示例代码:
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 );