我有一个数组:
array = ['Footballs','Baseball','football','Soccer']
而且我需要计算看到 Football 或 Baseball 的次数,无论大小写和复数形式如何。
这是我尝试做的,但没有成功:
array.count { |x| x.downcase.include? 'football' || x.downcase.include? 'baseball' }
编写这段代码的正确或更好的方法是什么?我正在寻找 3 作为答案。
最佳答案
我会将 count
与一个 block 结合使用,该 block 根据与您正在寻找的约束相匹配的正则表达式检查每个元素。在这种情况下:
array.count { |element| element.match(/(football|baseball)s?\Z/i) }
这将匹配以下任何元素:football, footballs, baseball, baseballs。
s?
使 's' 可选,i
选项 (/i
) 使表达式不区分大小写,\Z
选项检查字符串的结尾。
您可以在 Ruby 文档中阅读更多关于正则表达式的信息:http://www.ruby-doc.org/core-2.0.0/Regexp.html
使用正则表达式的一个很好的工具是 Rubular:http://rubular.com/
关于Ruby 计数数组对象,如果对象包含值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20386094/