我正在编写一个简单的程序,通过正则表达式过滤掉给定字符串中的股票报价。我对阵列中的打印结果没有问题,但是当我尝试使用“include?”时输出一个特定打印结果的bool,我收到了假。
此代码演示了我的确切问题:
我已经显示了匹配,元素数量,并验证它是代码中的数组,但是当我尝试使用“include?”拉出特定的打印元素“A”时(第10行),它无法输出“true”。
如果有人在这里解释我的错误,或者我将如何适当地查找特定元素是否在数组中,我将非常感激。谢谢。
答案 0 :(得分:8)
数组中的元素不是字符串,它们是碰巧作为字符串打印的MatchData。由于字符串"A"
不等于#<MatchData "A" 1:nil>
,include?
会失败。
答案 1 :(得分:5)
puts matches.map{|x| x.to_s}.include?("A")
答案 2 :(得分:1)
因为matches
是MatchData
个对象的数组,as seen here。您需要先将元素转换为字符串,因此请在map
调用中执行此操作:
matches = s.to_enum(:scan, r).map { Regexp.last_match.to_s }