如何生成一个只包含 A-Z
, 0-9
字符的长度为n的伪随机字符串,类似于SecureRandom.base64,但不包含字符"+"
,"/"
和"="
?例如:
(0..n).map {(('1'..'9').to_a + ('A'..'Z').to_a)[rand(36)]}.join
如何生成一个只包含 A-Z
, 0-9
字符的长度为n的伪随机字符串,类似于SecureRandom.base64,但不包含字符"+"
,"/"
和"="
?例如:
(0..n).map {(('1'..'9').to_a + ('A'..'Z').to_a)[rand(36)]}.join
Array.new(n){[*"A".."Z", *"0".."9"].sample}.join
SecureRandom.urlsafe_base64(n)
其中n
是您想要的数字的数量。
注:SecureRandom
使用数组来生成字母数字字符串,因此请记住,n
应该是您想要的数字数量+1。
例如:如果您想要一个8位字母数字组合:
SecureRandom.urlsafe_base64(9)
你可以像下面这样简单地做:
[*'A'..'Z', *0..9].sample(10).join
将数字10更改为任何数字以更改字符串的长度
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的答案中发现可以简化得多。)生成一个随机字符串,长度在10到20个字符之间,只包含大写字母A到Z和数字。
require 'string_pattern'
puts "10-20:/XN/".gen
.sample
还是[rand(36)]
? - gr8scott06sample
更加优雅,并且如果被取样的数组大小发生变化,它无需改动。 - Cary Swoveland[rand(36)]
而不是sample
? - sawa