Tạo mảng tất cả các chữ cái và chữ số


94

Sử dụng ruby, có thể tạo một mảng của mỗi chữ cái trong bảng chữ cái và 0-9 một cách dễ dàng không?

Câu trả lời:


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

hoặc là

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

hoặc là

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

( Integer#to_sphương pháp chuyển đổi một số thành một chuỗi biểu thị nó trong một hệ thống chữ số mong muốn )


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 đối với tôi.
Michael Burr,

1
@Michael Burr, toán tử biểu tượng . Xem ở đâyở đây
Nakilon

4
xin cho biết trong câu trả lời rằng mẫu mã * sẽ làm việc trong Ruby 1,9 nhưng không phải trong Ruby 1,8
Zabba

2
@Zabba, bạn vừa chỉ ra điều đó trong nhận xét của mình ..)
Nakilon,

3
Đo điểm chuẩn theo Ruby 2.1 [* ('a' .. 'z'), * ('0' .. '9')] nhanh hơn một chút so với (0 ... 36) .map {| i | i.to_s 36} (1,450000 giây so với 2,26000 trong đó n = 100.000). Nếu muốn bao gồm chữ hoa, hãy sử dụng như sau: [* ('a' .. 'z'), * ('A' .. 'Z'), * ('0' .. '9')]
Việt

33

đối với các chữ cái hoặc số, bạn có thể tạo phạm vi và lặp lại chúng. hãy thử điều này để có được một ý tưởng chung:

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

để lấy một mảng ra khỏi nó, chỉ cần thử những cách sau:

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


6

Thử cái này:

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

Hoặc dưới dạng chuỗi:

alphabet_string = alphabet_array.join

3
letters = *('a'..'z')

=> ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]


Mặc dù điều này có thể trả lời câu hỏi, nhưng không có lời giải thích nào về mã của bạn. Vui lòng cập nhật câu trả lời của bạn để cung cấp lời giải thích về những gì bạn đang làm. Cảm ơn!
Miroslav Glamuzina

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.