Den*_*nis 7 ruby comparison loops while-loop
我刚开始学习Ruby,今天遇到了一个问题.
numResults = /\d+/.match(ie.div(:id, 'results_label').text)
puts "Results found: "+numResults.to_s
while(numResults > 0)
.
. some more code
.
Run Code Online (Sandbox Code Playgroud)
我的输出中出现此错误:
Run Code Online (Sandbox Code Playgroud)Exception: undefined method `>' for #<MatchData:0x424c6d4>
这真的很奇怪,因为我在IRB中做了一个while循环,它工作得很好.我不能让循环中的代码执行,因为程序坚持条件.
谁知道什么是错的?
Jer*_*ten 12
numResults是一个MatchData对象,不能与>方法进行比较.您需要将其转换为字符串,然后将字符串转换为数字:
while(numResults.to_s.to_i > 0)
Run Code Online (Sandbox Code Playgroud)
在字符串与表达式不匹配的情况下,numResults将是nil
所以如果那就是你要测试的东西,你会想要的
while( !numResults.nil? ){
}
Run Code Online (Sandbox Code Playgroud)
在字符串的情况下不匹配的表达,numResults也不会nil在,另外,将包含匹配的数目(仅1最多这里,因为你没有一个重复匹配)numResults.size
此外,其他海报需要记住,numResults其中不包含任何匹配项,但包含文本数据中实际匹配的值.
而
numResults.to_s.to_i
Run Code Online (Sandbox Code Playgroud)
可能会工作,这只是因为它的优雅nil.to_s.to_i == 0.
如果你依赖于numResults正则表达式匹配计数方面的任何有意义的东西,那么你看错了地方.
| 归档时间: |
|
| 查看次数: |
10023 次 |
| 最近记录: |