0

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

那么我怎样才能制作一个随机字符串,它的长度只有我想要的某些字母。

我知道我可以从长度上进行查找,然后使用随机数并将其转换为 char 并将其添加到字符串中。但是我不希望添加我不想添加的字符,并且不希望添加我不想要的所有字符,因为这会花费太长时间。

4

3 回答 3

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以包含您想要的字符。请注意,\必须转义和换行符。

于 2013-07-07T16:58:36.793 回答
1

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

编辑:

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

于 2013-07-07T16:58:45.753 回答
0

除了两个答案——

你可以拥有它<yourChoiceOfName>-<currentTime>.yourext。这样,两个同名文件的机会就更少了。

可能currenttime包括.milliseconds

在这种情况下,您有一个已知的长度,即长度为yourChoiceOfName+ 长度currentTime+ 长度yourext

于 2013-07-07T17:03:20.933 回答