Ruby“包括?”当元素看起来在数组中时输出false

时间:2012-06-17 19:26:12

标签: ruby

我正在编写一个简单的程序,通过正则表达式过滤掉给定字符串中的股票报价。我对阵列中的打印结果没有问题,但是当我尝试使用“include?”时输出一个特定打印结果的bool,我收到了假。

此代码演示了我的确切问题:

http://ideone.com/JiQlA

我已经显示了匹配,元素数量,并验证它是代码中的数组,但是当我尝试使用“include?”拉出特定的打印元素“A”时(第10行),它无法输出“true”。

如果有人在这里解释我的错误,或者我将如何适当地查找特定元素是否在数组中,我将非常感激。谢谢。

3 个答案:

答案 0 :(得分:8)

数组中的元素不是字符串,它们是碰巧作为字符串打印的MatchData。由于字符串"A"不等于#<MatchData "A" 1:nil>include?会失败。

答案 1 :(得分:5)

puts matches.map{|x| x.to_s}.include?("A")

答案 2 :(得分:1)

因为matchesMatchData个对象的数组,as seen here。您需要先将元素转换为字符串,因此请在map调用中执行此操作:

matches = s.to_enum(:scan, r).map { Regexp.last_match.to_s }