/ / Ruby čínske znaky substring ťažkosti - rubín-na-koľajnice, rubín, substring, cjk

Ruby čínske znaky substring ťažkosti - rubín-na-koľajnice, rubín, substring, cjk

Na stránke mojich zábradlí existuje nejaké užívateľské rozhranie s dostatočným priestorom na zobrazenie prvých 5 znakov mena používateľa. Takže som trúbiť reťazec zobraziť takto:

@user.name[0..4]

Funguje, ak je názov v angličtine. Ale ak @user.name obsahuje čínske (viacbajtové) znaky, vzniknú dva problémy. Prvým problémom je to [0..4] len mi dáva 2 znaky, nie 5. Druhým problémom je, že niekedy sa posledná postava skráti na polovicu a na obrazovke sa objaví odpad.

Zaujímalo by ma, či je v rubíne nejaký relatívne čistý spôsob, ako zvládnuť substringing multibyte znaky?

odpovede:

3 pre odpoveď č. 1

Tu "s vynikajúci článok o Ruby 1.8 a multibyte support (alebo skôr jeho nedostatok).

Na základe toho, čo sa tam nachádza, môžete vyskúšať niečo ako:

# this should get you first 4 characters of the string:
your_chinese_string.scan(/./mu)[0,4].join