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ď č. 1Tu "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