За моя сайт за релси има някои потребителски интерфейси с достатъчно място за показване на първите 5 знака на името на потребителя. Така че аз съм съкращаване на низ, за да покажете, както следва:
@user.name[0..4]
Той работи, ако името е на английски. Но ако @user.name
съдържа китайски (многобайтови) знаци, възникват два проблема. Първият проблем е, че [0..4]
само ми дава 2 знака, а не 5. Вторият проблем е, че понякога последният герой се нарязва на половина и боклукът се появява на екрана.
Чудех се дали има някакъв сравнително чист начин да се справя с подбиване на многобайтови знаци в рубин?
Отговори:
3 за отговор № 1Тук ", а една отлична статия за Ruby 1.8 и многобайтова поддръжка (или, по-скоро, липсата на това).
Въз основа на това, което е там, можете да опитате да направите нещо като:
# this should get you first 4 characters of the string:
your_chinese_string.scan(/./mu)[0,4].join