使用string [range] = new_val,同时尊重Ruby 1.8.7中的UTF8

时间:2011-06-27 10:43:56

标签: ruby string utf-8 ruby-1.8

我有像

这样的代码
text[from..to] = text_insertion

问题是fromto计算UTF8编码的字符作为一个字符,而上面的代码在Ruby 1.8.7中按字节顺序计算

我必须使用Ruby 1.8.7

我可以使用哪种gem来使我的代码工作?我也可以重写它以使用String#substr或类似的东西,但我没有发现任何lib给我方法尊重UTF8编码。

1 个答案:

答案 0 :(得分:2)

您可以使用ActiveSupport的String#mb_chars方法。它让你写下这样的东西:

text.mb_chars[from..to] = text_insertion

自2.2版以来,它在所有版本的ActiveSupport中都可用。