6

在 PHP 中,可以使用函数将双角字符转换为单角字符mb_convert_kana。他们称其为“将禅格转化为韩格”。例如,我有一个要转换的字符串:

dbl = "BOX"

我想找到一些这样的方法

dbl = "BOX".convert_to_half_width # dbl is now "BOX"

有没有办法在 Ruby 中做到这一点?

4

4 回答 4

7

我使用 Ruby 内置NKFString#tr

require 'nkf'
dbl = "BOXカタカナ"
dbl = NKF.nkf('-X -w', dbl).tr('0-9a-zA-Z', '0-9a-zA-Z')
# dbl now is "BOXカタカナ"

这还具有将半角片假名转换为全角片假名的额外好处。

于 2013-05-26T00:58:16.273 回答
2

嗯,它不漂亮,它只适用于罗马字(可以扩展到处理其他字符)但它对我有用:

title = "BOX"
englishReplacements = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
japaneseReplacements = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"

converted = title.tr(japaneseReplacements, englishReplacements) 
# title is now "BOX"
于 2012-06-20T16:02:10.297 回答
0

有一个宝石:hz_on_fly

于 2012-06-20T16:00:28.310 回答
0

我认为Moji gem(日文文档)非常适合这个,一般来说也是一个非常有用的日语 gem(适用于 Ruby 1.8 和 1.9):

require 'moji'

dbl = Moji.zen_to_han("BOX")
# => "BOX"
于 2013-05-26T02:03:58.373 回答