Genera array di tutte le lettere e le cifre


94

Usando il rubino, è possibile creare facilmente un array di ogni lettera dell'alfabeto e 0-9?

Risposte:


145
[*('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 }

(il Integer#to_smetodo converte un numero in una stringa che lo rappresenta in un sistema numerico desiderato )


2
Esiste un nome particolare per l' *operatore utilizzato in questo contesto? È nuovo per me.
Michael Burr

1
@ Michael Burr, operatore splat . Vedi qui e qui
Nakilon

4
si prega di indicare in risposta che il codice di esempio * funzionerà in Ruby 1.9 ma non in Ruby 1.8
Zabba

2
@Zabba, l'hai appena indicato nel tuo commento ..)
Nakilon

3
Il benchmarking in Ruby 2.1 [* ('a' .. 'z'), * ('0' .. '9')] è un po 'più del doppio più veloce di (0 ... 36) .map {| i | i.to_s 36} (1,450000 s rispetto a 2,26000 dove n = 100.000). Se si desidera includere il maiuscolo, utilizzare quanto segue: [* ('a' .. 'z'), * ('A' .. 'Z'), * ('0' .. '9')]
Viet

33

per lettere o numeri è possibile formare intervalli e scorrere su di essi. prova questo per avere un'idea generale:

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

per estrarne un array, prova quanto segue:

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

8

Puoi anche farlo in questo modo:

'a'.upto('z').to_a + 0.upto(9).to_a

6

Prova questo:

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

O come stringa:

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


Anche se questo può rispondere alla domanda, non c'è spiegazione del tuo codice. Aggiorna la tua risposta per fornire una spiegazione di ciò che stai facendo. Grazie!
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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.