概要
原著者の許諾を得て翻訳・公開いたします。
- 英語記事: 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の議論をご覧ください。
 
      