如何在ruby中使用各种语言进行子串输入?

时间:2012-05-04 22:30:45

标签: ruby unicode

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

如何获取此字符串的第一个char / substrings?

ex:“Give”=> “G”     “日本”=> “日”

谢谢!

3 个答案:

答案 0 :(得分: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。

答案 1 :(得分:0)

您可以使用ActiveSupport的Chars class

string = "日本"
string.mb_chars[0]
=> "日"

答案 2 :(得分:0)

如果你有'ActiveRecord',你可以使用mb_chars。

或者您可以使用标准库:

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

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

str.codepoints.to_a[0]

它会将字符串的编码转换为数组。它对短琴弦有好处,但对大琴弦不好。