Tech Racho エンジニアの「?」を「!」に。
  • 開発

Ruby 2.5新メソッド: #delete_prefix と #delete_suffix(翻訳)

概要

原著者の許諾を得て翻訳・公開いたします。

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_prefixdeprefixlchompremove_prefixhead_chompなどがありました。

Matzdelete_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の議論をご覧ください。

関連記事

Ruby 2.5新メソッド: Dir.children と Dir.each_child(翻訳)


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。