【发布时间】:2020-03-17 12:48:25
【问题描述】:
在 PHP 中,可以使用函数 mb_convert_kana 将双角字符转换为单角字符。他们称其为“将禅格转化为韩格”。例如,我有一个字符串要转换:
dbl = "BOX"
我想找一些这样的方法
dbl = "BOX".convert_to_half_width # dbl is now "BOX"
有没有办法在 Ruby 中做到这一点?
【问题讨论】:
在 PHP 中,可以使用函数 mb_convert_kana 将双角字符转换为单角字符。他们称其为“将禅格转化为韩格”。例如,我有一个字符串要转换:
dbl = "BOX"
我想找一些这样的方法
dbl = "BOX".convert_to_half_width # dbl is now "BOX"
有没有办法在 Ruby 中做到这一点?
【问题讨论】:
我使用 Ruby 内置 NKF 和 String#tr 的组合
require 'nkf'
dbl = "BOXカタカナ"
dbl = NKF.nkf('-X -w', dbl).tr('0-9a-zA-Z', '0-9a-zA-Z')
# dbl now is "BOXカタカナ"
这还具有将半角片假名转换为全角片假名的额外好处。
【讨论】:
NKF.nkf('-Z4w', 'カタカナ') => "カタカナ"
嗯,它不漂亮,它只适用于罗马字(可以扩展到处理其他字符)但它对我有用:
title = "BOX"
englishReplacements = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
japaneseReplacements = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
converted = title.tr(japaneseReplacements, englishReplacements)
# title is now "BOX"
【讨论】:
有一个宝石:hz_on_fly
【讨论】:
我认为Moji gem (Japanese documentation) 非常适合这种情况,一般来说,它也是一个非常有用的日语 gem(适用于 Ruby 1.8 和 1.9):
require 'moji'
dbl = Moji.zen_to_han("BOX")
# => "BOX"
【讨论】: