Ruby:如何将潜在的unicode字符串分解为字节

时间:2020-03-06 14:49:51  来源:igfitidea点击:

我正在编写一款游戏,它将用户输入并呈现在屏幕上。我为此使用的引擎完全是unicode友好的,因此,我希望尽可能保持这种状态。问题在于渲染循环如下所示:

"string".each_byte do |c|
    render_this_letter(c)
end

我对i18n并不了解很多,但是我知道足够多,上面的代码仅对我和说我语言的人有用。我更喜欢这样的东西:

"unicode string".each_unicode_letter do |u|
    render_unicode_letter(u)
end

这在核心发行版中存在吗?我不愿意在安装中添加其他要求,但是如果这是唯一的方法,那么我将继续。

为了获得额外的乐趣,我无法知道该字符串是否实际上是unicode字符串。

编辑:我正在使用的库确实可以渲染整个字符串,但是如果用户单击"退格键",我就让用户对其进行动态编辑,从本质上讲,我需要知道要切掉多少字节。

解决方案

不幸的是,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

我们可以尝试从Rails代码库中包含ActiveSupport :: CoreExtensions :: String :: Unicode模块。