2017-01-22 44 views
2

ユーザーからの入力がRegEx [a-zA-z]と一致するかどうかを確認しようとしていますので、適切な方法についてドキュメントを確認しました。私はRuby-doc.orgmatch?を発見し、IRBのドキュメントに示されている例をコピーし、代わりにtrueの私は、この取得しています:NoMethodError:未定義のメソッド `match? ' "Ruby"の場合:String

2.3.3 :001 > "Ruby".match?(/R.../) 
NoMethodError: undefined method `match?' for "Ruby":String 
Did you mean? match 
     from (irb):1 
     from /usr/local/rvm/rubies/ruby-2.3.3/bin/irb:11:in `<main>' 

はなぜ、この方法は、私のIRBでは動作しませんか?

+2

私はあなたが2.3.3を使用していることに気付きました。ドキュメントは2.4.0です。それは関連するかもしれません。 –

+0

はい、そうです。ありがとう – ToTenMilan

答えて

7

String#match?およびRegexp#match?は、ルビー2.4の新しいメソッドです。 herehereを確認してください。

この新しい構文は、という別名だけでなく、です。これは主にグローバルオブジェクト$~を更新しないため、他の方法より高速です。 thisベンチマークによると、それは他の方法よりもの3倍速くまで実行されます。

ところで、あなたの目標を達成するために、(文字列が正規表現にマッチするかどうか確認してください)、あなたは[1]更新あなたのルビーバージョンは、この新機能を使用する可能性があるかは、[2]別のアプローチを使用します。

たとえば、あなたが見つからない場合はnil を返し=~ operator、またはmatchsが開始位置を使用することができます。このように使うことができます:

if "Ruby" =~ /R.../ 
    puts "found" 
end 
+0

構文エラーがありました。私はそれを編集する自由を取った。 –

+0

@EricDuminil確かに、気づかなかった。ありがとう! – mrlew

関連する問題