質問

ユーザー入力を取得して画面上にレンダリングするゲームを書いています。私がこれに使用しているエンジンは、完全にユニコードに対応しているため、可能な限りそれを保持したいと思います。問題は、レンダリングループが次のようになることです:

"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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top