Использование строки [range] = new_val при соблюдении UTF8 в Ruby 1.8.7 - PullRequest
3 голосов
/ 27 июня 2011

У меня есть код как

text[from..to] = text_insertion

Проблема в том, что from и to дают подсчет символов в кодировке UTF8 как один символ, в то время как приведенный выше код подсчитывает побайтно в Ruby 1.8.7

Я должен использовать Ruby 1.8.7

Какой драгоценный камень я мог бы использовать, чтобы мой код работал? Я также могу переписать его для использования String#substr или чего-то подобного, но я не нашел ни одной библиотеки, которая давала бы мне методы, соответствующие кодировке UTF8.

1 Ответ

2 голосов
/ 27 июня 2011

Вы можете использовать метод ActiveSupport String#mb_chars. Это позволит вам написать что-то вроде этого:

text.mb_chars[from..to] = text_insertion

Доступно во всех версиях ActiveSupport начиная с 2.2.

...