Java 创建只有特定字母和特定长度的随机字符串

Java 创建只有特定字母和特定长度的随机字符串,java,random,Java,Random,因此,我想生成一个随机字符串,但只想将某些字符作为字符串(只有那些可以在托管的文件名中使用的字符,例如www.example.com/HERE.EXTENTION) 那么,我怎样才能生成一个随机字符串,这个字符串的长度是我想要的,只有我想要的某些字母 我知道我可以从长度看一看,然后使用随机数将其转换为字符并添加到字符串中。但我不希望添加我不想添加的字符,并与我不想添加的字符一起循环,因为这会花费太长时间。使用此快速方法: String genRand(int length){ Random

因此,我想生成一个随机字符串,但只想将某些字符作为字符串(只有那些可以在托管的文件名中使用的字符,例如www.example.com/HERE.EXTENTION)

那么,我怎样才能生成一个随机字符串,这个字符串的长度是我想要的,只有我想要的某些字母

我知道我可以从长度看一看,然后使用随机数将其转换为字符并添加到字符串中。但我不希望添加我不想添加的字符,并与我不想添加的字符一起循环,因为这会花费太长时间。

使用此快速方法:

String genRand(int length){
   Random rand=new Random();
   String possibleLetters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ.";   
   StringBuilder sb = new StringBuilder(length);
   for(int i = 0; i < length; i++) 
      sb.append(possibleLetters.charAt(rand.nextInt(possibleLetters.length())));
   return sb.toString();
}
String genRand(int-length){
Random rand=新的Random();
字符串possibleLetters=“0123456789abcdefghijklmnopqrstuvxyz。”;
StringBuilder sb=新StringBuilder(长度);
for(int i=0;i
编辑
possibleLetters
以包含所需的字符。请注意,必须转义
\
和换行符。

使用此快速方法:

String genRand(int length){
   Random rand=new Random();
   String possibleLetters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ.";   
   StringBuilder sb = new StringBuilder(length);
   for(int i = 0; i < length; i++) 
      sb.append(possibleLetters.charAt(rand.nextInt(possibleLetters.length())));
   return sb.toString();
}
String genRand(int-length){
Random rand=新的Random();
字符串possibleLetters=“0123456789abcdefghijklmnopqrstuvxyz。”;
StringBuilder sb=新StringBuilder(长度);
for(int i=0;i

编辑
possibleLetters
以包含所需的字符。请注意,必须转义
\
和换行符。

将所有接受的字母存储在一个数组中,然后生成一个介于0和该数组长度之间的随机数N次,以获得数组中字母的N个索引。连接字母

编辑:


请注意,如果您的目标是生成唯一的名称,则random不是解决方案。随机数不能保证唯一性。

将所有接受的字母存储在一个数组中,然后生成一个介于0和该数组长度之间的随机数N次,以获得数组中字母的N个索引。连接字母

编辑:


请注意,如果您的目标是生成唯一的名称,则random不是解决方案。随机数不能保证唯一性。

除了两个答案之外-

您可以像
-.yourext
一样使用它。这样,两个文件同名的可能性更小

currenttime
可能包括
毫秒


在这种情况下,您有一个已知的长度,即除了两个答案之外的
yourChoiceOfName
+当前时间
+下一个
yourext
的长度-

您可以像
-.yourext
一样使用它。这样,两个文件同名的可能性更小

currenttime
可能包括
毫秒


在这种情况下,对于代码示例,您有一个已知的长度,即
yourChoiceOfName
+长度
currentTime
+长度
yourext

+1,但是
AB
应替换为
可能的标识符
@JBNizet抱歉,我是从旧代码中挖掘出来的,为了可读性而重命名变量时,我忽略了…\@user2526311:假设rnd是Random的一个实例,是的,它是正确的。为什么不呢?你测试过代码吗?@JBNizet我确实测试过代码,但出现错误“rnd无法解决”。@JBNizet和OP:对不起,我今天真的精神错乱了。代码示例+1,但是
AB
应该被
possibleLetters
@JBNizet抱歉,我是从旧代码中挖掘出来的,为了可读性而重命名变量时,我忽略了…\@user2526311:假设rnd是Random的一个实例,是的,它是正确的。为什么不呢?你测试过代码吗?@JBNizet我确实测试过代码,但出现了错误“rnd无法解决”。@JBNizet和OP:对不起,我今天真的精神错乱了。