将全角日文文本转换为半角(zen-kaku到han-kaku)

nev*_*ing 5 ruby unicode text cjk

在PHP中,可以使用该函数将双宽字符转换为单宽度mb_convert_kana.他们称之为"将zen-kaku转换为han-kaku".例如,我有一个要转换的字符串:

dbl = "???"
Run Code Online (Sandbox Code Playgroud)

我想找一些像这样的方法

dbl = "???".convert_to_half_width # dbl is now "BOX"
Run Code Online (Sandbox Code Playgroud)

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

sle*_*ita 6

我使用Ruby内置NKF和组合String#tr

require 'nkf'
dbl = "???"
dbl = NKF.nkf('-X -w', dbl).tr('?-??-??-?', '0-9a-zA-Z')
Run Code Online (Sandbox Code Playgroud)

这还具有将半角片假名翻译成全套片假名的额外好处.

  • @KaranBamniya 这个答案将全角 0-9、az、AZ 转置为半角 ASCII 字符,同时将 *半角* 片假名转置为 *全角* 片假名。如果要将全角片假名转换为半角,请使用 `NKF.nkf('-Z4w', 'カタカナ') => "カタカナ"` (2认同)