Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using string[range]=new_val while respecting UTF8 in Ruby 1.8.7

I have code like

text[from..to] = text_insertion

The problem is that from and to are given counting UTF8 encoded characters as one char while the code above counts byte-wise in Ruby 1.8.7

I have to use Ruby 1.8.7

Which gem could I use to make my code work? I also can rewrite it to use String#substr or something similar, but I haven't found any lib that gives me methods that respect UTF8 encoding.

like image 690
Richard Metzler Avatar asked May 01 '26 00:05

Richard Metzler


1 Answers

You can use ActiveSupport's String#mb_chars method. It let's you write something like this:

text.mb_chars[from..to] = text_insertion

It is available in all versions of ActiveSupport since 2.2.

like image 142
Gregor Schmidt Avatar answered May 03 '26 05:05

Gregor Schmidt



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!