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 № 1Aqui 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