Ruby:潜在的にユニコード文字列をバイトに分割する方法
質問
ユーザー入力を取得して画面上にレンダリングするゲームを書いています。私がこれに使用しているエンジンは、完全にユニコードに対応しているため、可能な限りそれを保持したいと思います。問題は、レンダリングループが次のようになることです:
"string".each_byte do |c|
render_this_letter(c)
end
i18nについてはあまり知りませんが、上記のコードが私と私の言語を話す人々のためだけに機能することを知るのに十分なことを知っています。次のようなものを好む:
"unicode string".each_unicode_letter do |u|
render_unicode_letter(u)
end
これはコアディストリビューションに存在しますか?私はインストールに追加の要件を追加することを多少嫌いますが、それがそれを行う唯一の方法であれば、私は生きます。
さらに面白くするために、文字列が実際にはユニコード文字列であるかどうかを知る方法はありません。
EDIT:私が使用しているライブラリは実際に文字列全体をレンダリングできますが、ユーザーにその場で表示されるものを編集させます-'backspace'にヒットした場合、基本的に、チョップするバイト数を知る必要があります最後まで。
解決
残念ながら、Ruby 1.8.xのUnicodeサポートは貧弱です。 1.9で対処されています。しかし、当面は、このようなライブラリ( http://snippets.dzone.com/posts / show / 4527 )は良い解決策です。リンクされたライブラリを使用すると、コードは次のようになります。
"unicode_string".each_utf8_char do |u|
render_unicode_letter(u)
end
所属していません StackOverflow