/ / Ruby китайски характер substring трудности - рубин на релси, рубин, substring, cjk

Ruby китайски характер substring трудности - рубинка на релси, рубин, substring, cjk

За моя сайт за релси има някои потребителски интерфейси с достатъчно място за показване на първите 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