生成伪随机字符串AZ,0-9
如何生成一个只包含AZ
0-9
字符伪随机字符串,像没有"+"
, "/"
和"="
SecureRandom.base64一样0-9
? 例如:
(0..n).map {(('1'..'9').to_a + ('A'..'Z').to_a)[rand(36)]}.join
Array.new(n){[*"A".."Z", *"0".."9"].sample}.join
即使是蛮力也很容易:
n = 20 c = [*?A..?Z + *?0..?9] size = c.size n.times.map { c[rand(size)] }.join #=> "IE210UOTDSJDKM67XCG1"
或者,无需替换:
c.sample(n).join #=> "GN5ZC0HFDCO2G5M47VYW"
如果需要的话。 (我最初有c = [*(?A..?Z)] + [*(?0..?9)]
,但从@ sawa的回答中可以看出,这可以简化一点。)