【Ruby】文字列の先頭/末尾に特定のものが含まれているかを判定する

2019年12月18日Ruby

こんにちは、しきゆらです。
今回は、文字列の先頭・末尾にある特定のものを正規表現で頑張らずとも判定する方法を知ったのでメモしておきます。

文字列の中に、特定のものが入っているかを判定するためには正規表現というものを使う場合があります。
そして、含まれているかどうかを判定するためのメソッドとして「String#match?」があります。
instance method String#match? (Ruby 2.6.0 リファレンスマニュアル)

しかし、文字列の先頭・末尾が特定のものかどうかを判定するためにmatch?を使うのはもったいないことでした。
というのも、この時にはより状況にマッチしたメソッドがあるからです。
それが「String#start_with?」「String#end_with?」です。
instance method String#start_with? (Ruby 2.6.0 リファレンスマニュアル)
instance method String#end_with? (Ruby 2.6.0 リファレンスマニュアル)

これらのメソッドは、機能はシンプルだが高速に処理できるようです。
Ruby: 文字列マッチは正規表現より先に専用メソッドを使おう
Ruby の文字列マッチ判定のパフォーマンス · Yuichi Takada

ということで、知らないメソッドシリーズでした。
ちなみに、これらはrubocop-performanceで怒ってもらえるようです。
Class: RuboCop::Cop::Performance::StartWith — Documentation for bbatsov/RuboCop (master)

今回、はここまで。
おわり

Posted by しきゆら