Ruby 中如何生成一个随机字符串?

需要得到一个大小写混合的字符串[a,A-Z,z],目前用的方法是

value = ""; 12.times{value << ((rand(2)==1?65:97) + rand(26)).chr}

感觉还是不好,而且再加混合数字的串就不会了。不知道有没有更好的方法,烦请详细指点!

阅读 8.5k
3 个回答

(0...50).map{ ('a'..'z').to_a[rand(26)] }.join

下面这个效率更高:
o = [('a'..'z'),('A'..'Z')].map{|i| i.to_a}.flatten;
string = (0...50).map{ o[rand(o.length)] }.join;

加多一个供楼主选择:
rand(36 ** n).to_s(36)
n是生成的字符串的长度

[*('a'..'z'),*('A'..'Z'),*(0..9)].shuffle[0..9].join

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏