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(翻訳)

デザインも頼めるシステム開発会社をお探しならBPS株式会社までどうぞ この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

hachi8833

Twitter: @hachi8833、GitHub: @hachi8833 コボラー、ITコンサル、ローカライズ業界、Rails開発を経てTechRachoの編集・記事作成を担当。 これまでにRuby on Rails チュートリアル第2版の半分ほど、Railsガイドの初期翻訳ではほぼすべてを翻訳。その後も折に触れてそれぞれ一部を翻訳。 かと思うと、正規表現の粋を尽くした日本語エラーチェックサービス enno.jpを運営。 実は最近Go言語が好き。 仕事に関係ないすっとこブログ「あけてくれ」は2000年頃から多少の中断をはさんで継続、現在はnote.muに移転。

hachi8833の書いた記事

週刊Railsウォッチ

インフラ

BigBinary記事より

ActiveSupport探訪シリーズ