質問

私はルビーを学び始め、私は今日の問題に遭遇します。

numResults = /\d+/.match(ie.div(:id, 'results_label').text)
puts "Results found: "+numResults.to_s

while(numResults > 0)
.
. some more code
.

私は私の出力にこのエラーが表示されます。

Exception: undefined method `>' for #<MatchData:0x424c6d4>

どの私はIRBにwhileループを作り、それがうまく働いたので、本当に不思議です。 プログラムが条件でスティックので、私は実行するループ内のコードを取得することはできません。

誰もが間違っているのか知っている?

役に立ちましたか?

解決

numResultsMatchDataオブジェクトであると>方法と比較することはできません。あなたは、その後、それを文字列に変換する文字列を数値に変換する必要があります:

while(numResults.to_s.to_i > 0)

他のヒント

文字列が表現に一致しない場合には、numResultsnilされます。

あなたがテストしているものthatsのは、あなたがたいと思うので、もし

while( !numResults.nil? ){ 

}

文字列はのないの表現にマッチする場合には、numResultsnilされず、あなたが繰り返しを持っていないので、さらに、1つだけで、ほとんどここでは一致の数を(含まれていますnumResults.sizeで一致)

また、他のポスターはnumResultsが見つかったマッチのない番号が含まれていませんが、テキストデータからの実際のの試合の値が含まれていることを心に留めておく必要があります。

一方で

numResults.to_s.to_i 

唯一の原因nil.to_s.to_i == 0の恵みに、動作する可能性があります。

あなたが正規表現のマッチ数の面で有意義なものであることをnumResultsに頼っていた場合は、

、あなたは間違った場所で探していた。

にごwhile条件を変更してみてください

while(numResults.to_i > 0)

これは整数にnumResultsを強制します。それはあなたの文字列の正規表現マッチャーとして返されているように見えます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top