Generieren Sie ein Array aller Buchstaben und Ziffern


93

Ist es mit Ruby möglich, einfach ein Array aus jedem Buchstaben des Alphabets und 0-9 zu erstellen?

Antworten:


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

oder

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

oder

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

(Die Integer#to_sMethode konvertiert eine Zahl in eine Zeichenfolge, die sie in einem gewünschten Zahlensystem darstellt. )


2
Gibt es einen bestimmten Namen für den *in diesem Zusammenhang verwendeten Operator? Es ist neu für mich.
Michael Burr

1
@ Michael Burr, Splat-Betreiber . Siehe hier und hier
Nakilon

4
Bitte geben Sie als Antwort an, dass das * Codebeispiel in Ruby 1.9 funktioniert, jedoch nicht in Ruby 1.8
Zabba

2
@ Zabba, Sie haben es gerade in Ihrem Kommentar angegeben ..)
Nakilon

3
Das Benchmarking unter Ruby 2.1 [* ('a' .. 'z'), * ('0' .. '9')] ist etwas mehr als doppelt so schnell wie (0 ... 36) .map {| i | i.to_s 36} (1.450000s gegenüber 2.26000s mit n = 100.000). Wenn die Aufnahme von Großbuchstaben gewünscht wird, verwenden Sie Folgendes: [* ('a' .. 'z'), * ('A' .. 'Z'), * ('0' .. '9')]
Viet

33

Für Buchstaben oder Zahlen können Sie Bereiche bilden und diese durchlaufen. Versuchen Sie dies, um eine allgemeine Vorstellung zu bekommen:

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

Um ein Array daraus zu erstellen, versuchen Sie einfach Folgendes:

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


6

Versuche dies:

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

Oder als Zeichenfolge:

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"]


Auch wenn dies die Frage beantworten kann, gibt es keine Erklärung für Ihren Code. Bitte aktualisieren Sie Ihre Antwort, um zu erklären, was Sie tun. Vielen Dank!
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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.