Rubyにはstring.startswith(“ abc”)組み込みメソッドがありますか?


回答:


339

それは呼ばれていますString#start_with?、ではないString#startswith:ルビーで、ブールっぽいメソッドの名前がで終了?し、メソッド名内の単語がで区切ります_。どこにs行ったのかわからない、個人的にはString#starts_with?、実際よりもString#start_with?


9
マッツは、sなしで2人称単数形または3人称複数形のように見えるので、sなしを好むと述べています。
Andrew Grimm

5
String#start_with?ruby 1.8.7と1.9.0で導入されました-古いバージョンでは、他の回答で述べられている正規表現またはインデックスバージョンのいずれかを使用することができます。
Hamish Downer、2011

3
Railsでは、String#starts_with?
Abdo

3
@ anthropomorphicgithub.com / rails/ rails / blob/ ; String#start_with?のエイリアスです。
Abdo

10
@AndrewGrimm唯一の問題は、「文字列」が3人称単数であることです。(Ergo、 's'は削除されるべきではありませんでした)。
user456584 2014

41

質問のタイトルと質問の本文が異なります。Rubyにはstarts_withがありませんか?方法。ただし、Ruby フレームワークであるRails 、sepp2kが述べているようにそうします。ドキュメントへのリンクについては、彼の回答に関するコメントを参照してください。

ただし、常に正規表現を使用できます。

if SomeString.match(/^abc/) 
   # SomeString starts with abc

^ 正規表現で「文字列の開始」を意味します


私は、subject + bodsの組み合わせを、「Rubyにはstarts_withメソッドがありません。railsはありますか?」という意味で使用しました。
sepp2k 2010年

@ sepp2k、しかしそれは?問題のタイトルにある)
Nakilon

1
文字列にはstart_with?Ruby 1.9以降( eigenclass.org/hiki/Changes+in+Ruby+1.9#l124
steenslag

4
@steenslag-ruby 1.8.7にもstart_withがありますか?- ドキュメント1.8.7リリースノート
Hamish Downer

文字列リテラルから正規表現を構築するときは注意してください。特殊文字をエスケープすることを忘れないでください。文字列リテラルが予測不能になる可能性がある関数があります
Radu Simionescu

17

これが非Railsプロジェクトの場合は、次のように使用しますString#index

"foobar".index("foo") == 0  # => true

9
ただし、これは、より多くのパフォーマンスを必要とします。つまり、start_with?メソッドは、文字列の先頭が指定された文字列と一致することを簡単に確認できます。つまり、nが指定された文字列の長さである最大n文字を処理します。ベース文字列全体。失敗した場合、は1つのアクセス(文字列ごと)と比較を行いますが、ベース文字列のほぼ全長をウォークします。indexstarts_with?index
OldPeculier 14

5

使用できますString =~ Regex。完全な正規表現一致の位置を文字列で返します。

irb> ("abc" =~ %r"abc") == 0
=> true
irb> ("aabc" =~ %r"abc") == 0
=> false

なるべく//代わりにご利用ください%r
Cyoce 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.