Rubyで「ひらがな・アルファベット」を1文字づつ片っ端から出力したい
2013-10-02 | カテゴリ >> Ruby

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

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

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn
2013-10-02 | カテゴリ >> Ruby 

関連記事

コメント2件

 tsubasakat | 2017.09.05 17:24

自分もこの方法を探していました。

for に渡せばそれぞれの文字列に対して何かできそうですね。

こうして記事に残してくれるのは学ぶ側にとってすごくありがたいことです。記事が古くなっても読まれることがあります。今も続けてらっしゃるようなのでコメントしました。頑張ってください。

 きたむら@東京伊勢海老(管理者) | 2017.09.05 19:46

tsubasakatさん コメントありがとうございます! (化物語ですかね… 名作ですね…)

お役に立てたようで何よりです(^o^)
これからもブログ続ける気力になります〜

Comment





Comment



*