2011-01-31 34 views

Trả lời

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

hoặc

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

hoặc

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

Có một tên cụ thể cho toán tử '*' được sử dụng trong ngữ cảnh này không? Nó mới với tôi. –

+1

@Michael Burr, * nhà điều hành mạng *. Xem [ở đây] (http://stackoverflow.com/questions/918449/what-is-the-operator-doing-to-this-string-in-ruby) và [ở đây] (http: //theplana.wordpress. com/2007/03/03/ruby-idioms-the-splat-operator /) – Nakilon

+3

vui lòng cho biết câu trả lời rằng * mẫu mã sẽ hoạt động trong Ruby 1.9 nhưng không phải trong Ruby 1.8 – Zabba

28

cho các chữ cái hoặc số bạn có thể tạo thành dãy và lặp lại chúng. thử này để có được một ý tưởng chung:

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

để có được một mảng ra khỏi nó, chỉ cần thử như sau:

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

Bạn cũng có thể làm theo cách này:

'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

Bạn chỉ có thể làm điều này:

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

Hãy thử điều này:

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

Hoặc như chuỗi:

alphabet_string = alphabet_array.join 
Các vấn đề liên quan