java随机⽣成数字字母_Java中字母数字随机串的⽣成
本问题已经有最佳答案,请猛点这⾥访问。
我正在使⽤另⼀个答案中的字符串⽣成器,但是除了字母/数字、没有空格、标点符号等,我不能使⽤任何东西。您能解释⼀下如何限制此代码中的字符集吗?另外,如何确保它总是30个字符长?
Random generator = new Random();
StringBuilder stringBuilder = new StringBuilder();
int Length = 30;
java生成随机数的方法char tempChar ;
for (int i = 0; i < Length; i++){
tempChar = (char) (Int(96) + 32);
stringBuilder.append(tempChar);
我已经研究了⼤多数其他答案,但⽆法到解决这个问题的⽅法。谢谢。如果这是复制品,不要冲我⼤喊⼤叫。⼤多数答案都⽆法解释代码的哪⼀部分控制⽣成的数字的长度或在哪⾥调整字符集。
我还尝试了place("","1"),这可能有效,但Eclipse说没有⽤于StringBuilder的replace⽅法。
案件有关系吗?
"⼤多数答案都⽆法解释代码的哪⼀部分控制⽣成的数字的长度或调整字符集的位置。"…指出明显的情况通常被认为是不礼貌的。
我知道会有⼈对这个问题感到愤怒。对不起,如果我冒犯了,但下⾯的答案肯定增加了⽹站上可⽤知识的丰富和深度。我不认为这是重复的,因为答案对过程有更详细的解释。
如果要控制字符集和长度,请以
public static String randomString(char[] characterSet, int length) {
Random random = new SecureRandom();
char[] result = new char[length];
for (int i = 0; i < result.length; i++) {
// picks a random index out of character set > random character
int randomCharIndex = Int(characterSet.length);
result[i] = characterSet[randomCharIndex];
}
return new String(result);
}
并与
char[] CHARSET_AZ_09 ="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray();
指定字符集。
它不是基于StringBuilder,因为您知道长度,不需要所有开销。
它分配正确⼤⼩的char[]数组,然后⽤从输⼊数组中随机选择的字符填充该数组中的每个单元格。
感谢你忽视了反对者。这很管⽤!
@privusguru btw您发布的代码在(0..95) + 32=>32..127之间⽣成数字。例如,与这些数字相对应的字符就在这⾥asciitable。这样做意味着将随机数限制为48..57 OR 65..90 OR 97..122,这将⾮常痛苦。(或者丢弃不在该范围内的字符,例如@sello proposed)
@Zapl没有碰撞吗?
@不,这是随机的。这包括连续10次⽣成相同的字符串,尽管概率很⼩。
我⽤的是:
public static String randomStringOfLength(int length) {
StringBuffer buffer = new StringBuffer();
while (buffer.length() < length) {
buffer.append(uuidString());
}
//this part controls the length of the returned string
return buffer.substring(0, length);
}
private static String uuidString() {
return UUID.randomUUID().toString().replaceAll("-","");
}
谢谢你。⾮常有帮助。
您可以尝试以下操作:
//piece
int i = 0;
while(i < length){
char temp =(char) (Int(92)+32);
if(Character.isLetterOrDigit(temp))
{
stringBuilder.append(temp);
++i;
}
}
System.out.println(stringBuilder);
应该实现你的⽬标
感谢您提供时间和信息。我会在某个地⽅⽤这个。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。