生成所有字母和数字的数组

JP *_*shy 86 ruby

使用ruby,是否可以使字母表中的每个字母数组和0-9容易?

Nak*_*lon 137

[*('a'..'z'), *('0'..'9')] # doesn't work in Ruby 1.8
Run Code Online (Sandbox Code Playgroud)

要么

('a'..'z').to_a + ('0'..'9').to_a # works in 1.8 and 1.9
Run Code Online (Sandbox Code Playgroud)

要么

(0...36).map{ |i| i.to_s 36}
Run Code Online (Sandbox Code Playgroud)

  • 请在回答中指出*代码示例在Ruby 1.9中有效,但在Ruby 1.8中无效 (4认同)
  • Ruby 2.1 [*('a'..'z')下的基准测试,*('0'..'9')]的速度是(0 ... 36)的两倍多.map {| i | i.to_s 36}(1.450000s与2.26000s,其中n = 100,000).如果需要包含upcase,请使用以下内容:[*('a'..'z'),*('A'..'Z'),*('0'..'9')] (3认同)
  • 在此上下文中使用的`*`运算符是否有特定名称?这对我来说是新的. (2认同)
  • @Zabba,你刚才在评论中说明了..) (2认同)

Pet*_*ete 33

对于字母或数字,您可以形成范围并迭代它们.试试这个以获得一个大致的想法:

("a".."z").each { |letter| p letter }
Run Code Online (Sandbox Code Playgroud)

要从中获取数组,只需尝试以下操作:

("a".."z").to_a
Run Code Online (Sandbox Code Playgroud)


小智 8

你也可以这样做:

'a'.upto('z').to_a + 0.upto(9).to_a
Run Code Online (Sandbox Code Playgroud)


qjn*_*jnr 7

尝试这个:

alphabet_array = [*'a'..'z', *'A'..'Z', *'0'..'9']
Run Code Online (Sandbox Code Playgroud)

或作为字符串:

alphabet_string = alphabet_array.join
Run Code Online (Sandbox Code Playgroud)