2012-06-20 1 views
5

PHPでは、ダブル幅の文字を単一の幅に変換することができます。これは、関数mb_convert_kanaです。彼らはそれを「禅楽と漢字の和訳」と呼ぶ。例えば、私は、変換する文字列があります。全角日本語テキストを半角に変換する(zen-kakuからhan-kakuへ)

dbl = "BOX" 

をし、私はこの

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

のようないくつかの方法がRubyでこれを実行する方法がある見つけるしたいのですが?そのための宝石あります

答えて

0

hz_on_fly gemは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

私はルビーの組み合わせを使用すると、内蔵のNKFString#tr

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

これがフルに半角カナを転置する追加の利点を持っていますカタカナも同様です。

0

私は(ルビー1.8と1.9で動作します)Moji宝石(Japanese documentationが)だけでなく、一般的に非常に有用で日本語宝石であること、これに適しだろうと思う:

require 'moji' 

dbl = Moji.zen_to_han("BOX") 
# => "BOX" 
関連する問題