所以我想生成一个随机字符串,但只希望某些字符成为字符串(只有那些可以在要托管的文件名中使用的字符,例如 www.example.com/HERE.EXTENTION)。
那么我怎样才能制作一个随机字符串,它的长度只有我想要的某些字母。
我知道我可以从长度上进行查找,然后使用随机数并将其转换为 char 并将其添加到字符串中。但是我不希望添加我不想添加的字符,并且不希望添加我不想要的所有字符,因为这会花费太长时间。
使用这种快速方法:
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();
}
编辑possibleLetters
以包含您想要的字符。请注意,\
必须转义和换行符。
将所有接受的字母存储在一个数组中,然后生成一个介于 0 和该数组长度之间的随机数 N 次,以获得数组中字母的 N 个索引。连接字母。
编辑:
请注意,如果您的目标是生成唯一名称,则 random 不是解决方案。随机并不能保证唯一性。
除了两个答案——
你可以拥有它<yourChoiceOfName>-<currentTime>.yourext
。这样,两个同名文件的机会就更少了。
可能currenttime
包括.milliseconds
在这种情况下,您有一个已知的长度,即长度为yourChoiceOfName
+ 长度currentTime
+ 长度yourext
。