从stackoverflow的一些回答中,我得到了一个简洁的小函数,可以生成一个只有a-z和0-9个字符的10个字符的字符串:
rand(36**10).to_s(36)
问题是它有时会失败,只生成9个字符。但我真的很喜欢它的轻松和快速。有什么建议可以修正它,使我可以确保它总是生成10个字符吗?(没有任何循环或检查。)

最佳答案

当您随机生成一个小于369的数字时,它最终是一个9个字符的字符串。用零填充:

rand(36**10).to_s(36).rjust(10, "0")

例子:
irb(main):018:0> (36**9).to_s(36)
=> "1000000000"
irb(main):019:0> (36**9 - 1).to_s(36)
=> "zzzzzzzzz"
irb(main):020:0> (36**5).to_s.rjust(10, "0")
=> "0060466176"

关于ruby - 不幸的是,小的随机字符串生成器有时会失败。请帮我解决,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4411582/

10-11 21:30