Rubyで「ひらがな・アルファベット」を1文字づつ片っ端から出力したい

ruby_icon_314

今更ながら、rubyで a=>z や、1から100までーー とかの文字を順番に出力するという場面に遭遇した。
数字はいいとして、stringはどうしたものかと思って調べると、範囲オブジェクトなるものがある事を知りました。
Rubyの場合はRangeクラスというクラスだった。

ていうか、似たようなものは他の言語でも当たり前のように最初から組み込まれてるそうで常識っぽいww

そんなわけで自分用にメモ

数字の場合

普通に0からカウントアップできるけど、範囲オブジェクトを使うとこう

(0..100)

この書き方はPHPとか他の言語でも結構似ていた。

ちなみに .to_s で配列になる。

今回配列で扱いたかったのだけど、後で作る文字の配列と合体させる必要があったので数値から文字列の配列に変換したかった。
こうしてみる。

ary = []
(0..100).each do |i|
  ary.push(i.to_s)
end

でももっとスマートな方法がありそうだな。。

文字の場合

まずはアルファベットでaからzまでを順番に出力したい。
ふつうに
(‘a’..’z’)
わかりやっすー

なお、(‘aa’..’zz’) としてもいい感じにしてくれるんだそうで、

p ('aa'..'zz').to_a
⇒["aa", "ab", "ac", "ad", "ae", "af", "ag", "ah",,,(略),,, "zw", "zx", "zy", "zz"]

次にひらがなを、あいう・・と順番に出すのも同じで
(‘あ’..’ん’) とするだけ。
ただし、Ruby1.9で実行したら何の問題もなく出てきたが1.8は途中で以下の様に文字化けした。
きっと基本的な何かがあかんのだと思うけど、、 どうすんだろう

あ
ぃ
い
ぅ
(略)
ぽ
ま
み
▒▒
▒▒
▒▒
(略)
▒7
▒8
▒9

「む」を境にバグった。。
おわり

2013-10-02 | Posted in RubyNo Comments » 


関連記事

Comment





Comment



*