Ruby汉字子串困难

发布于 2024-10-18 20:00:17 字数 300 浏览 4 评论 0原文

对于我的 Rails 站点,某些 UI 的空间仅足以显示用户名的前 5 个字符。因此,我截断字符串以显示如下:

@user.name[0..4]

如果名称是英文,则它可以工作。但如果 @user.name 包含中文(多字节)字符,则会出现两个问题。第一个问题是 [0..4] 只给了我 2 个字符,而不是 5 个。第二个问题是有时最后一个字符会被切成两半,屏幕上会显示垃圾。

我想知道是否有一些相对干净的方法来处理 ruby​​ 中的子串多字节字符?

For my rails site, there's some UI with only enough space to display the first 5 characters of a user's name. So I'm truncating the string to display as follows:

@user.name[0..4]

It works if the name is in English. But if @user.name contains Chinese (multibyte) characters, two problems arise. The first problem is that [0..4] only gives me 2 characters, not 5. The second problem is that sometimes the last character gets cut in half and garbage shows up on screen.

I was wondering if there's some relatively clean way to handle substring-ing multibyte characters in ruby?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦与时光遇 2024-10-25 20:00:17

这里一篇关于 Ruby 1.8 和多字节支持(或者更确切地说,缺乏它)的优秀文章。

根据那里的情况,您可以尝试执行以下操作:

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

Here's an excellent article about Ruby 1.8 and multibyte support (or, rather, the lack of it).

Based on what's there, you can try doing something like:

# this should get you first 4 characters of the string:
your_chinese_string.scan(/./mu)[0,4].join
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文