環境
Rails 6.0.1
Ruby 2.6.3
PostgreSQL 11.16
ハイフンなしの半角数字に成形する方法
phone_number = '090ー1234ー5678'
phone_number.tr('0-9', '0-9').gsub(/[^0-9]+/, '')
# => "09012345678"
tr
で全角数字だったら半角数字に成形。
gsub
でハイフンなどのinteger
以外の文字列が入っていたとき削除(空文字に変換)。
@scivola さんのコメントより
gsub
よりシンプルで高速なdelete
もあるとのこと。phone_number.delete("^0-9")
成形するメソッド
下記記事の内容を組み合わせて、電話番号をきれいに成形するメソッドにしてもいいかも。
def format!(phone_number)
return nil if phone_number.blank?
return phone_number if phone_number.match?(/\A[0-9]+\z/)
phone_number.tr('0-9', '0-9').gsub(/[^0-9]+/, '')
end