2012-06-20 40 views
5

在PHP中有可能全角字符轉換爲單一寬度與功能mb_convert_kana。他們稱之爲「把禪師轉化爲韓流」。例如,我有一個字符串轉換:將全角日文文字爲半角(禪閣漢閣)

dbl = "BOX" 

,我想找到一些這樣

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

方法有沒有辦法在Ruby中做到這一點?

回答

0

hz_on_fly寶石注入AR模型的替代品,這可能不是你想要的。看看unicode_japanese。只要這樣做:

Unicode::Japanese.z2h("BOX") 
    # => "BOX" 

我的項目的叉子更新爲Ruby 1.9.2(AFAIK其他人都沒有)。要使用它,將它添加到您的Gemfile:

gem 'unicode_japanese', 
    :git => 'git://github.com/jpgeek/unicode_japanese.git' 
0

嗯,這是不是漂亮,它僅適用於羅馬字(可以擴展到處理其它字符),但它的工作對我來說:

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

converted = title.tr(japaneseReplacements, englishReplacements) 
# title is now "BOX" 
3

我使用了Ruby的組合內置NKFString#tr

require 'nkf' 
dbl = "BOX" 
dbl = NKF.nkf('-X -w', dbl).tr('0-9a-zA-Z', '0-9a-zA-Z') 

這有半角片假名調換到全的好處也有片假名。

0

我認爲Moji寶石(Japanese documentation)將是非常適合這一點,因爲福祉一般一個非常有用的日語寶石(使用Ruby 1.8和1.9的作品):

require 'moji' 

dbl = Moji.zen_to_han("BOX") 
# => "BOX"