365 文字
2 分
Rubyで半角カナへ変換
Ruby2014-05-21


Rubyで全角カナを半角カナに変換するには、nkfを使うのが手軽です。
> require 'nkf'> NKF.nkf('-w -Z4 -Z1 -x', 'ゼンカク')> ゼンカクオプションの説明
nkfコマンドと同じオプションが使えます。
| オプション | 説明 |
|---|---|
-w | UTF-8で出力する |
-Z4 | 全角カナを半角カナに変換する |
-Z1 | 全角スペースを半角スペースに変換する |
-x | 半角カナを全角カナに変換する既定の挙動を抑止する |
-xを指定しないと、半角カナが全角カナに変換されてしまいます。-Z4だけだと相互変換が勝手にかかってしまうので、-xを指定して全角→半角の一方向にします。
Ruby 3.4以降の注意点
nkfはRuby 3.4でdefault gemからbundled gemに変更されました。Bundlerを使うプロジェクトでは、Gemfileに明示的に追加する必要があります。
# Gemfilegem "nkf"Ruby 3.3では「nkf will no longer be part of the default gems since Ruby 3.4.0」という警告が出るだけで動きますが、Ruby 3.4以降のbundle実行環境ではGemfileに書かないとrequire 'nkf'が失敗します。
なお、逆方向の変換(半角カナ→全角カナ)だけであれば、gemを追加しなくても標準のString#unicode_normalizeで可能です。
> 'ゼンカク'.unicode_normalize(:nfkc)=> "ゼンカク"全角→半角カナ方向はUnicode正規化では表現できないため、nkfのようなライブラリの出番になります。
関連記事
この記事が役に立ったら
GitHub Sponsorsで応援できます

