0

给定一个字符串,它可能包含英语或日语(宽字符)或其他语言

我怎样才能得到这个字符串的第一个字符/子字符串?

例如:“给予”=>“G”“日本”=>“日”

谢谢!

4

3 回答 3

2

只要您在字符串上设置了正确的编码,它就内置在 ruby​​ 中:

$ ruby -ve 'p "日本".encoding, "日本"[0]'
ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin11.3.0]
#<Encoding:UTF-8>
"日"

无需使用 mb_chars 或 ActiveRecord。

于 2012-05-04T23:08:08.337 回答
0

You can use ActiveSupport's Chars class

string = "日本"
string.mb_chars[0]
=> "日"
于 2012-05-04T22:40:28.717 回答
0

如果您有“ActiveRecord”,则可以使用 mb_chars。

或者您可以使用标准库:

str = '日本'
str.codepoints.take(1)
#日

'codepoint' 通过字符串的实际编码给出一个枚举器,而 'take' 将采用你想要的任意数量的字符。或者你可以使用

str.codepoints.to_a[0]

它将字符串的编码转换为数组。它适用于短字符串,但不适用于大字符串。

于 2012-05-04T22:47:07.260 回答