すべての文字と数字の配列を生成する


93

ルビーを使用して、アルファベットと0-9の各文字の配列を簡単に作成できますか?

回答:


144
[*('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、スプラット演算子ここここを
ナキロン2011年

4
*サンプルコードはRuby 1.9では機能するがRuby 1.8では機能しないことを答えてください
Zabba

2
@Zabba、あなたはあなたのコメントでそれを示しました..)
ナキロン'31年

3
Ruby 2.1でのベンチマーク[*( 'a' .. 'z')、*( '0' .. '9')]は、(0 ... 36).mapの2倍以上の速さです。{| i | i.to_s 36}(1.450000秒と2.26000秒、n = 100,000)。大文字を含める必要がある場合は、次を使用します。[*( 'a' .. 'z')、*( 'A' .. 'Z')、*( '0' .. '9')]
ベトナム

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


これで質問の答えになるかもしれませんが、コードの説明はありません。回答を更新して、何をしているかを説明してください。ありがとう!
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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.