2011-01-31 18 views

Respuesta

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

o

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

o

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

¿Hay un nombre particular para el operador '*' utilizado en este contexto? Es nuevo para mí –

+1

@Michael Burr, * operador de splat *. Ver [aquí] (http://stackoverflow.com/questions/918449/what-is-the-operator-doing-to-this-string-in-ruby) y [aquí] (http: //theplana.wordpress. com/2007/03/03/ruby-idioms-the-splat-operator /) – Nakilon

+3

indique en respuesta que la muestra del código * funcionará en Ruby 1.9 pero no en Ruby 1.8 – Zabba

28

para letras o números, puede formar rangos e iterar sobre ellos. Pruebe lo siguiente para obtener una idea general:

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

para obtener una matriz fuera de él, sólo trata de lo siguiente:

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

También puede hacerlo de esta manera:

'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

puede simplemente hacer esto:

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

Prueba esto:

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

O como cadena:

alphabet_string = alphabet_array.join 
Cuestiones relacionadas