日本語の文字列反転

http://d.hatena.ne.jp/hakobe932/20060719/1153329395
なんか楽しそうなことをやっているので,Rubyでもや ら い で か.


残念ながら,Rubyではエンコードがどーとか,そーゆーモジュールがあるのかどーかは知らん.
何はともあれ,やってみなけりゃ始まらない.やってみますのミ○リです.


http://ja.wikipedia.org/wiki/UTF-8を参照するに,UTF-8な日本語は3バイトということだ.んじゃ,こうすりゃごり押しになるけど,解けるか?

  1. 3バイトごとにsplit
  2. 反転して文字列に


とりあえずこれでいけるのかしら.

str = '参考文献はウィキペディア'

splited_str = str.split(/(?=(.{3})+$)/)
puts splited_str.reverse.to_s
=>
アアィアデアペアキアィアウアはア献ア文ア考ア参

文字の間に「ア」が入ると言う不思議(少なくともボクには不思議に見える).どうも,末尾の文字がわざわざ間に入り込んでいるみたいだ.なんていうか,splitが怪しい.splitで「位置にマッチする」ってのは,そもそもこんなやり方で良いのかがわからないので,マニュアルを読む.


一分後,splitのマニュアルを読んでなんかわかった気がする.てことで,こんな簡単に.

$KCODE = 'u'

str = '参考文献はウィキベディア'

puts str.split(//).reverse.to_s
=>
アィデベキィウは献文考参

KCODEかよ!もしかしたら,こんなこともできるかも.

$KCODE = 'u'

str = '参考文献はウィキベディア'

puts str.reverse
=>
??㣂㇃㙃㭂㣂㦂㯁㮌燖惀肏?

流石に駄目だった.


てかKCODE重要.

$KCODE = 'u'

str = '参考文献はWikipedia'

puts str.split(//).reverse.to_s
=>
aidepikiWは献文考参

当たり前だけど,日本語と英語の混じった文ですら簡単に反転できた.ほんと,プログラミングが簡単にできる言語だと思った.