红宝石:如何打破潜在的unicode字符串转换成字节(Ruby: How to break a po

2019-10-17 14:27发布

我正在写一个游戏,正在用户的输入,并使其在屏幕上。 我使用这个发动机是完全Unicode的友好,所以我想继续,如果在所有可能的。 问题是,呈现循环如下所示:

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

我不知道了一大堆关于国际化,但我非常清楚,知道上面的代码只有永远要为我和谁讲我的语言的人工作。 我宁愿是这样的:

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

是否在核心分配这个存在吗? 我有点反感,增加了安装额外的要求,但如果是这样做的唯一途径,我会活下去。

对于额外的乐趣,我也没有办法知道如果字符串是,事实上,一个unicode字符串。

编辑:我使用的确可以使整个字符串库,但是我让什么对飞过来的用户编辑 - 如果他们打“退格”,从本质上讲,我需要知道多少字节砍掉结束。

Answer 1:

不幸的是红宝石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


Answer 2:

你可以尝试包括的ActiveSupport :: CoreExtensions ::字符串::统一从轨道基本代码模块。



文章来源: Ruby: How to break a potentially unicode string into bytes