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