需要得到一個大小寫混合的字符串[a,A-Z,z],目前用的方法是
value = ""; 12.times{value << ((rand(2)==1?65:97) + rand(26)).chr}
感覺還是不好,而且再加混合數字的串就不會了。不知道有沒有更好的方法,煩請詳細指點!
小伙看你根骨奇佳,潜力无限,来学PHP伐。
(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;
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是產生的字串的長度
rand(36 ** n).to_s(36)
[*('a'..'z'),*('A'..'Z'),*(0..9)].shuffle[0..9].join
(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