gsub
gsubは、パターンにマッチした文字列を置き換えたい時に使います。
また、パターンには、正規表現が使えます。
使い方
文字列.gsub(パターン, 置き換え後の文字)
phone = '090-1234-5678'
phone.gsub(/-/, '')
結果
=> "09012345678"
* 2019/2/27追記
コメント欄にて、@scivolaさんにアドバイス頂いたので追記です!
単純な削除はString#deleteの方が良いとのこと。
phone = '090-1234-5678'
phone.delete('-')
=> "09012345678"
benchmark_driverというgemでベンチマークするとgsubよりdeleteの方が速いらしいです。
ベンチマーク載せた方が良い記事書けそうですね。勉強になりました。
gsub!
gsubと同じですが、破壊的メソッドです。
phone = '090-1234-5678'
phone.gsub!(/-/, '')
実行した時の返り値もgsubと同じ
=> "09012345678"
破壊的メソッドなので、レシーバであるphoneの中身も返り値と同じになります。
print phone
結果
=> "09012345678"
ブロックを使ったgsub
gsub、gsub!は、パターンにマッチした文字列をブロックに渡して加工出来ます。
ブロックを使うとどんな文字列にも加工できそうです。
文字列.gsub(パターン) { |ブロック| 処理 }
試しにスネークケースで書かれたhello_world
の先頭のhと_の後ろのwを大文字にしてキャメルケースのHelloWorld
にしてみましょう。
snake = 'hello_world'
snake.gsub!(/^.|(?<=_)./) { |camel| camel.upcase } # 先頭と_の後ろを大文字にします
snake.gsub!(/_/, '') # _を削除します
結果
=> "HelloWorld"
例題だとgsubじゃなくてscanとかでも出来そうですが、scanはまたの機会にまとめます。
参考
https://www.sejuku.net/blog/14685#gsub-3
https://www.sejuku.net/blog/60033