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