概要
原著者の許諾を得て翻訳・公開いたします。
- 英語記事: Ruby 2.5 added delete_prefix and delete_suffix methods
- 原文公開日: 2017/11/28
- 著者: Amit Choudhary
- サイト: BigBinary Blog
Ruby 2.5新メソッド: #delete_prefix と #delete_suffix(翻訳)
本記事は、BigBinaryのRuby 2.5シリーズのひとつです。
先ごろRuby 2.5.0-preview1がリリースされました。
Ruby 2.4の場合
Projects::CategoriesController
という文字列があり、Controller
という文字を削除したいとします。このような場合は#chomp
メソッドを使えます。
irb> "Projects::CategoriesController".chomp("Controller")
=> "Projects::Categories"
しかし同じ文字列からProjects::
を削除したい場合、#chomp
に対応するメソッドがないので、subに頼る必要があります。
irb> "Projects::CategoriesController".sub(/Projects::/, '')
=> "CategoriesController"
Naotoshi Seoはこんな単純なタスクで正規表現を使いたくないと考え、こうしたタスクをカバーできるメソッドがRubyに必要であると提案しました。
このとき提案されたメソッド名には、remove_prefix
、deprefix
、lchomp
、remove_prefix
、head_chomp
などがありました。
Matzがdelete_prefix
というメソッド名を勧め、こうしてこのメソッドが誕生しました。
Ruby 2.5.0-preview1の場合
irb> "Projects::CategoriesController".delete_prefix("Projects::")
=> "CategoriesController"
これで、プレフィックスを#delete_prefix
で削除し、サフィックスを#chomp
で削除できます。名前が対象的でないと感じられたため、#delete_suffix
メソッドも追加されました。
irb> "Projects::CategoriesController".delete_suffix("Controller")
=> "Projects::Categories"
Elixir、Go、Python、PHPでどのようにこのタスクを扱っているかについては#12694の議論をご覧ください。