Generating Alphanumeric random string in Java
本问题已经有最佳答案,请猛点这里访问。
我正在使用另一个答案中的字符串生成器,但是除了字母/数字、没有空格、标点符号等,我不能使用任何东西。您能解释一下如何限制此代码中的字符集吗?另外,如何确保它总是30个字符长?
1 2 3 4 5 6 7 |
我已经研究了大多数其他答案,但无法找到解决这个问题的方法。谢谢。如果这是复制品,不要冲我大喊大叫。大多数答案都无法解释代码的哪一部分控制生成的数字的长度或在哪里调整字符集。
我还尝试了StringBuilder.replace("","1"),这可能有效,但Eclipse说没有用于StringBuilder的replace方法。
如果要控制字符集和长度,请以
1 2 3 4 5 6 7 8 9 10 | 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 = random.nextInt(characterSet.length); result[i] = characterSet[randomCharIndex]; } return new String(result); } |
并与
1 | char[] CHARSET_AZ_09 ="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray(); |
指定字符集。
它不是基于
它分配正确大小的
此处使用的更多示例:http://ideone.com/xvizcd
我用的是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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("-",""); } |
您可以尝试以下操作:
1 2 3 4 5 6 7 8 9 10 11 |
应该实现你的目标