Générer un tableau de toutes les lettres et chiffres


94

En utilisant ruby, est-il possible de créer facilement un tableau de chaque lettre de l'alphabet et 0-9?

Réponses:


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

ou

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

ou

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

(la Integer#to_sméthode convertit un nombre en une chaîne le représentant dans un système numérique souhaité )


2
Y a-t-il un nom particulier pour l' *opérateur utilisé dans ce contexte? C'est nouveau pour moi.
Michael Burr

1
@Michael Burr, opérateur splat . Voir ici et ici
Nakilon

4
Veuillez indiquer en réponse que l'exemple de code * fonctionnera dans Ruby 1.9 mais pas dans Ruby 1.8
Zabba

2
@Zabba, vous venez de l'indiquer dans votre commentaire ..)
Nakilon

3
L'analyse comparative sous Ruby 2.1 [* ('a' .. 'z'), * ('0' .. '9')] est un peu plus de deux fois plus rapide que (0 ... 36) .map {| i | i.to_s 36} (1,450000s contre 2,26000s où n = 100 000). Si l'inclusion de upcase est souhaitée, utilisez ce qui suit: [* ('a' .. 'z'), * ('A' .. 'Z'), * ('0' .. '9')]
Viet

33

pour les lettres ou les nombres, vous pouvez former des plages et les parcourir. essayez ceci pour avoir une idée générale:

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

pour en extraire un tableau, essayez simplement ce qui suit:

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


6

Essaye ça:

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

Ou comme chaîne:

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ême si cela peut répondre à la question, il n'y a aucune explication de votre code. Veuillez mettre à jour votre réponse pour fournir une explication de ce que vous faites. Merci!
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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.