Wygeneruj tablicę wszystkich liter i cyfr

95

Czy za pomocą ruby ​​można łatwo stworzyć tablicę każdej litery alfabetu i 0-9?

JP Silvashy
źródło

Odpowiedzi:

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

lub

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

lub

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

( Integer#to_smetoda konwertuje liczbę na ciąg reprezentujący ją w żądanym systemie liczbowym )

Nakilon
źródło
2
Czy istnieje jakaś konkretna nazwa *operatora używana w tym kontekście? To dla mnie nowość.
Michael Burr
1
@Michael Burr, operator splat . Zobacz tutaj i tutaj
Nakilon
4
proszę wskazać w odpowiedzi, że * kod przykładowy będzie działał w Rubim 1.9, ale nie w Rubim 1.8
Zabba
2
@Zabba, właśnie wskazałeś to w swoim komentarzu ..)
Nakilon
3
Benchmarking w Rubim 2.1 [* ('a' .. 'z'), * ('0' .. '9')] jest nieco ponad dwa razy szybszy niż (0 ... 36) .map {| i | i.to_s 36} (1,450000 w porównaniu z 2,26000, gdzie n = 100 000). Jeśli chcesz dodać wielkie litery, użyj następujących znaków: [* ('a' .. 'z'), * ('A' .. 'Z'), * ('0' .. '9')]
Viet
34

dla liter lub cyfr możesz tworzyć zakresy i iterować po nich. spróbuj tego, aby uzyskać ogólny pomysł:

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

aby wyciągnąć z tego tablicę, po prostu spróbuj wykonać następujące czynności:

("a".."z").to_a
Pete
źródło
9

Możesz to również zrobić w ten sposób:

'a'.upto('z').to_a + 0.upto(9).to_a
user3731366
źródło
7

Spróbuj tego:

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

Lub jako ciąg:

alphabet_string = alphabet_array.join
qjnr
źródło
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"]

Daniel
źródło
Chociaż może to odpowiedzieć na pytanie, nie ma wyjaśnienia twojego kodu. Zaktualizuj swoją odpowiedź, aby podać wyjaśnienie tego, co robisz. Dzięki!
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
user1290366
źródło
2

Możesz po prostu to zrobić:

("0".."Z").map { |i| i }
giordanofalves
źródło