2011-01-31 94 views

回答

115
[*('a'..'z'), *('0'..'9')] # doesn't work in Ruby 1.8 

('a'..'z').to_a + ('0'..'9').to_a # works in 1.8 and 1.9 

(0...36).map{ |i| i.to_s 36} 
+2

在此上下文中使用的`*`运算符是否有特定的名称?这对我来说是新的。 – 2011-01-31 01:38:28

28

对于字母或数字,你可以形成范围并迭代它们。试试这个得到一个总体思路:

("a".."z").each { |letter| p letter } 

获取数组出来,只是尝试以下操作:

("a".."z").to_a 
6

你也可以这样来做:

'a'.upto('z').to_a + 0.upto(9).to_a 
2
myarr = [*?a..?z]  #generates an array of strings for each letter a to z 
myarr = [*?a..?z] + [*?0..?9] # array of strings a-z and 0-9 
0

你可以只是这样做:

("0".."Z").map do |letter| 
    puts letter 
end 
0

试试这个:

alphabet_array = [*'a'..'z', *'A'..'Z', *'0'..'9'] 

或者作为字符串:

alphabet_string = alphabet_array.join