Створити масив усіх букв і цифр


94

Використовуючи ruby, чи можна легко створити масив кожної літери в алфавіті та 0-9?

Відповіді:


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

або

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

або

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

( Integer#to_sметод перетворює число у рядок, що представляє його у бажаній системі числення )


2
Чи існує конкретна назва *оператора, який використовується в цьому контексті? Для мене це нове.
Michael Burr

1
@Michael Burr, оператор splat . Дивіться тут і тут
Накілон

4
будь ласка, вкажіть у відповіді, що * зразок коду буде працювати в Ruby 1.9, але не в Ruby 1.8
Zabba

2
@Zabba, ти щойно вказав це у своєму коментарі ..)
Nakilon

3
Бенчмаркинг під Ruby 2.1 [* ('a' .. 'z'), * ('0' .. '9')] трохи більше, ніж удвічі швидший, ніж (0 ... 36) .map {| i | i.to_s 36} (1,450000 с проти 2,26 000 с, де n = 100 000). Якщо бажано включити великі літери, використовуйте наступне: [* ('a' .. 'z'), * ('A' .. 'Z'), * ('0' .. '9')]
Viet

33

для букв або цифр ви можете формувати діапазони та перебирати їх. спробуйте це, щоб отримати загальне уявлення:

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

щоб отримати з нього масив, просто спробуйте наступне:

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


6

Спробуйте це:

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

Або як рядок:

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


Незважаючи на те, що це може дати відповідь на запитання, пояснення вашого коду немає. Будь ласка, оновіть свою відповідь, щоб пояснити, що ви робите. Дякую!
Мирослав Гламузіна


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.