Tüm harf ve rakamlardan oluşan bir dizi oluşturun


96

Yakut kullanarak, alfabedeki her harften ve 0-9 arası bir dizi kolayca yapılabilir mi?

Yanıtlar:


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

veya

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

veya

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

( Integer#to_syöntem, bir sayıyı istenen sayı sisteminde temsil eden bir dizeye dönüştürür )


2
*Bu bağlamda kullanılan operatör için belirli bir isim var mı ? Benim için yeni.
Michael Burr

1
@Michael Burr, uyarı operatörü . Buraya ve buraya
Nakilon

4
Lütfen yanıt olarak * kod örneğinin Ruby 1.9'da çalışacağını ancak Ruby 1.8'de
çalışmayacağını belirtin

2
@Zabba, az önce yorumunuzda belirttiniz ..)
Nakilon

3
Ruby 2.1 altında kıyaslama [* ('a' .. 'z'), * ('0' .. '9')] (0 ... 36) .map {| i'nin iki katından biraz daha hızlıdır | i.to_s 36} (1.450000s'ye karşı 2.26000s, burada n = 100.000). Büyük harf eklenmesi isteniyorsa, aşağıdakileri kullanın: [* ('a' .. 'z'), * ('A' .. 'Z'), * ('0' .. '9')]
Viet

35

Harfler veya sayılar için aralıklar oluşturabilir ve üzerlerinde yineleme yapabilirsiniz. genel bir fikir edinmek için bunu deneyin:

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

bunun dışında bir dizi elde etmek için şunu deneyin:

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

9

Bunu şu şekilde de yapabilirsiniz:

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

7

Bunu dene:

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

Veya dize olarak:

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


Bu, soruyu yanıtlasa bile, kodunuzun açıklaması yoktur. Lütfen ne yaptığınızla ilgili bir açıklama sağlamak için yanıtınızı güncelleyin. Teşekkürler!
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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.