目次
概要
日本語の表記揺れなどに対応する必要があり、Stringクラスに定義する形で色々作ったのでメモしておきます。
参考文献
- https://easyramble.com/japanese-regex-with-ruby-oniguruma.html
- https://docs.ruby-lang.org/ja/latest/class/String.html#I_TR
- https://docs.ruby-lang.org/ja/latest/class/NKF.html
- https://spirits.appirits.com/doruby/11666/
-
https://qiita.com/scivola/items/905225bf4175392bc359
感謝です😆
使用した正規表現
/\p{Han}/ # 漢字にマッチ
/\p{Hiragana}/ # ひらがなにマッチ
/\p{Katakana}/ # カタカナにマッチ
/ー/ # 長音符にマッチ(当たり前ですがこれ忘れると「サッカー」とかにマッチしなくなるので注意)
/々/ # 「々」にマッチ(漢字に含まれないので注意)
※記事初稿時点では漢字の正規表現は /一-龥/ としていました。(ググって出てくるものもこれが多いです)
しかし、上記の表現ではカバー出来ない漢字があるとのことで、注意が必要です。
こちらはコメントで頂いた情報を元に修正しました。
以下記事が詳しいです。
https://qiita.com/scivola/items/905225bf4175392bc359
作ったメソッド達
全角半角変換
class String
def to_half_size
# 全角を半角に
# 長音符はハイフンに
self.tr('0-9a-zA-Z+ー', '0-9a-zA-Z+-')
end
def to_full_size
# to_hals_sizeと逆
self.tr('0-9a-zA-Z+-', '0-9a-zA-Z+ー')
end
end
ひらがなカタカナ変換
class String
def hiragana_to_katakana
NKF.nkf('-W -w --katakana', self)
end
def katakana_to_hiragana
NKF.nkf('-W -w --hiragana', self)
end
end
※nkfのオプション(第一引数)は公式を参考にしてください。
記号の削除
class String
def remove_symbolic_character
# 全&半角数字/全&半角英小&大文字/ひらがな/カタカナ/漢字/ー(長音符)/スペース以外 と スペース を消す
self.gsub(/[^0-9a-zA-Z0-9a-zA-Z々\p{Han}\p{Hiragana}\p{Katakana}ー']| | |\'/, '')
end
end
破壊的メソッドにしたい時!
replaceメソッドでselfを置き換える事が出来るらしい。
(js使う人には文字列の置換っぽく見えるけど、self自体を置き換える)
class String
def to_half_size
self.tr('0-9a-zA-Z+ー', '0-9a-zA-Z+-')
end
def to_half_size!
self.replace(self.to_half_size)
end
end