rubyで半角カナを全角カナに

2020-03-15

ruby, カナ, encode

半角カナ、機種依存文字、日本人情報処理技術者なら一度は悩んだことがあるのでは?
きっと昔の人は「今」を便利にしたい気持ちが強すぎたのでしょう。。。

毎度悩まされますが今回はデータ移行作業でSHIFT_JISのCSVをDBに取り込む際に悩みました。
以前まではnkf使ってたんですが今回このような素敵な記事を見たのでコレでやってみました

いきなり結論

1
2
irb(main):001:0> 'タピオカミルクティー'.gsub(/[\uFF61-\uFF9F]+/) { |str| str.unicode_normalize(:nfkc) }
=> "タピオカミルクティー"

半角カナは濁点だけとか置けちゃうので、コレだけですべてが綺麗に収まるわけではないと思いますが
一旦これで変換して見せてあげて、これ以上やります?ってめんどくさそうに伝えてみたたところ
プロダクトオーナーの方もそこそこ満足&納得していただけました。

外部のライブラリを使わずにできる点もいいですね~

こんな感じでしょうか...

1
2
"パ゚ンダ゙".gsub(/[\uFF61-\uFF9F]+/) { |str| str.unicode_normalize(:nfkc) }.gsub(/[\u3099\u309A]/, '?')
=> "パ?ンダ?"

コメント

投稿する

投稿したコメントはご自身で削除できません

不適切なコメントと判断した場合は管理側で削除することがあります