LoginSignup
12
4

More than 3 years have passed since last update.

[Ruby] String#gsub で半角カタカナを全角カタカナに変換する

Last updated at Posted at 2019-07-24

方法

コード

'タピオカ'.gsub(/[\uFF61-\uFF9F]+/) { |str| str.unicode_normalize(:nfkc) }
#=> "タピオカ"

説明

  • 'タピオカ'.unicode_normalize と書かずに gsub を介しているのは、Unicode 正規化を適用する文字列を限定し、想定外の置換が起きないようにするため。
  • 半角カタカナの Unicode コードポイントについては、@scivola さんのコメント、および Wikipedia の 半角カナ ≫ Unicode (UTF-8, UTF-16 など) を参考にした。

旧方法

@scivola さんにコメントをいただく前に紹介したいた方法。半角カタカナ以外も Unicode 正規化してしまうため改善が必要だった。

コード

'カンダタ'.gsub(/\p{In_Halfwidth_and_Fullwidth_Forms}+/) { |str| str.unicode_normalize(:nfkd) }
#=> "カンダタ"

説明

  • Ruby の正規表現では \p{} で Unicode プロパティを指定できる。

関連

参考

Unicode 正規化について復習するのに以下のページが役立った。


  1. Onigmo は Ruby (2.0 以降) で採用されている正規表現エンジン。 

12
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
4