Ruby 计数数组对象,如果对象包含值

标签 ruby arrays count

我有一个数组:

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/

相关文章:

ruby-on-rails - Rails 4 添加位置 header

ruby-on-rails - 升级到 rails 5.2.0 后无法指定测试目录

ruby - 在终端上不调用 "ruby"执行 ruby​​ 文件

javascript - 从命令行解析多个参数 Node.js/js

javascript - 使用用于拆分的相同分隔符加入字符串

mysql - 如何统计另一个表的数据

Ruby - 语句中不正确的换行符仍然会给出结果吗?

java - 可编辑的二维数组

mysql - 哪个更快 : COUNT(DISTINCT Column) vs. COUNT(*) ... GROUP BY Column

java - 字串计数器