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