Rubyで回文

今週に入ってからずっとRubyと戯れています。以前にも書いたとおりお気に入りのPythonではなくRubyで書いているのは情報の充実しているRuby on Railsを使ってWebアプリケーションを構築するのが最終目標だからです。


Rubyといえばクロージャという感じで助手さんからもよく話を振られますが、使い方をようやく把握して徐々にRubyを使えるようになってきたという手ごたえを感じる今日この頃ですが、やはり日本語の扱いがあまり気持ちよくありません。


確かに正規表現文字コードは日本語に対応していますが、日本語文字列を1文字単位でアクセスするためにはいちいち配列に変換しなければいけないというのはどうも効率が悪い気がしてなりません。しかもstrscanのposが常にバイト単位というのは不思議でなりません。


正直、正規表現を使えれば文字単位のアクセスはほとんど要らないなという感じもしますが、できればPythonのように日本語を扱う際はUnicodeにしてしまえば1文字単位で扱える方法が欲しいものです。


こんな感じで・・。

# Ruby
a = "abcde"
print a[0] #=> 97

a = "あいうえお"
b = a.split(//) #=> ['あ','い','う','え','お']
print a[0] #=> 130 ('あ'の1バイト目)
print b[0] #=> 130 ('あ'の1バイト目)

# Python
a = "abcde"
print a[0] #=> a

a = u"あいうえお"
print a[0] #=> u'\u3042' ('あ'のUCS2表現)