Rails rails 随机生成字母跟数字的组合,比如 4 位、6 位、7 位等等

76521 · 2014年11月06日 · 最后由 76521 回复于 2015年01月28日 · 3920 次阅读

我想随机生成字母跟数字的组合,每一位可以数字也可以是字母随机的,比如生成 4 位的,第一位可以是数字也可以是字母,第二位可以是数字也可以是字母,依次类推。比如还可以生成 5 位、6 位、7 位等等。

做验证码吗

def g_salt(len)
  chars = ("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a
  salt = ""
  1.upto(len) {|i| salt << chars[rand(chars.size-1)]}
  salt
end

g_salt 4

SecureRandom.hex(10)

#3 楼 @flowerwrong 不用 SecureRandom 的话,直接用 Array#sample 好了:

def g_salt(len)
  chars = Array('a'..'z') + Array('A'..'Z') + Array(0..9)
  len.times.map { chars.sample }.join
end
(0...8).map { (65 + rand(26)).chr }.join

=> "DAWUVWHD"
(0...50).map { ('a'..'z').to_a[rand(26)] }.join 
=>"zdalsfggektuozqhubmykjxmhwqzbxroibmskbcujdarobetvk"

o = [('a'..'z'), ('A'..'Z')].map { |i| i.to_a }.flatten  
string = (0...50).map { o[rand(o.length)] }.join  
=>"tKzshdvulxGyrfzpMgmSMJcpfxzUkpehqslKfonttknQEnyBWK"

from:http://stackoverflow.com/questions/88311/how-best-to-generate-a-random-string-in-ruby/88341#88341

谢谢啊 各位,已经解决了,我是这样写的
([('A'..'Z'),('a'..'z'),*('0'..'9')]-%w(0 1 I O)).sample(4).join

#7 楼 @scott 谢谢啊 各位,已经解决了,我是这样写的

([('A'..'Z'),('a'..'z'),*('0'..'9')]-%w(0 1 I O)).sample(4).join

#5 楼 @ashchan 谢谢啊 各位,已经解决了,我是这样写的

([('A'..'Z'),('a'..'z'),*('0'..'9')]-%w(0 1 I O)).sample(4).join

#3 楼 @flowerwrong 谢谢啊 各位,已经解决了,我是这样写的

([('A'..'Z'),('a'..'z'),*('0'..'9')]-%w(0 1 I O)).sample(4).join

#1 楼 @Rei 谢谢啊 各位,已经解决了,我是这样写的

([('A'..'Z'),('a'..'z'),*('0'..'9')]-%w(0 1 I O)).sample(4).join

#4 楼 @TsingHan 谢谢啊 各位,已经解决了,我是这样写的

([('A'..'Z'),('a'..'z'),*('0'..'9')]-%w(0 1 I O)).sample(4).join

需要 登录 后方可回复, 如果你还没有账号请 注册新账号