こんにちは!kossyです!
さて、今回はRubyの標準モジュールである「NKF」を用いて、
全角英数字や全角スペースを半角に変換する方法をブログに残してみたいと思います。
環境
Rails 6.0.2.1
Ruby 2.5.1
MacOS Mojave
方法
こんな感じのCSVファイルがあったとします。
で、このファイルの中身を全て半角でDBに取り込んで欲しいという要件があったとします。
そういう時に使えるのが、NKFモジュールです。
$ rails c $ require 'csv' $ require 'nkf' $ csv = CSV.parse(NKF.nkf('-w -Z1',File.read('./tmp/members.csv')), headers:true) $ csv.headers => ["ID", "NAME"] $ csv.map do |row| > {'1': row[0], '2': row[1] } > end => [{:"1"=>"001", :"2"=>"TANAKA TARO"}, {:"1"=>"002", :"2"=>"YAMADA ZIRO"}, {:"1"=>"003", :"2"=>"SATO SABURO"}, {:"1"=>"004", :"2"=>"ITO SIRO"}, {:"1"=>"005", :"2"=>"MOURI KOGORO"}, {:"1"=>"006", :"2"=>"TAKAHASHI ROKURO"}, {:"1"=>"007", :"2"=>"SUZUKI SHICHIRO"}, {:"1"=>"008", :"2"=>"YAMAMOTO HATIROU"}, {:"1"=>"009", :"2"=>"NAKAGAWA KURO"}]
tmpディレクトリ以下のmembers.csvをnkfメソッドにオプション-w と -Z1を付与して読み込みを行なっています。
上記のオプションを指定してCSVの読み込みを行なった結果、
["ID", "NAME"] のように半角に変換されました。
NKFには他にもたくさん使い方や便利なオプションがあるので、興味のある方は
公式ドキュメントを参考にしてみてください。