/ / Dificuldades de substring caracteres chineses Ruby - ruby-on-rails, ruby, substring, cjk

Dificuldades de substring de caracteres chineses Ruby - ruby-on-rails, ruby, substring, cjk

Para o meu site rails, há algumas interfaces com apenas espaço suficiente para exibir os 5 primeiros caracteres do nome de um usuário. Então estou truncando a string para mostrar como segue:

@user.name[0..4]

Funciona se o nome estiver em inglês. Mas se @user.name contém caracteres chineses (multibyte), dois problemas surgem. O primeiro problema é que [0..4] só me dá 2 personagens, não 5. O segundo problema é que às vezes o último personagem é cortado pela metade e o lixo aparece na tela.

Eu queria saber se há alguma maneira relativamente limpa para lidar com caracteres multibyte substring-ing em ruby?

Respostas:

3 para resposta № 1

Aqui está um excelente artigo sobre suporte a Ruby 1.8 e multibyte (ou melhor, a falta dele).

Com base no que está lá, você pode tentar fazer algo como:

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