ruby - 检查文件是否包含字符串

标签 ruby if-statement

所以我在这里发现了这个问题,但我对输出以及如何使用 if 语句处理它有疑问。这就是我的,但它总是说它是真的,即使文件中不存在 monitor 这个词

if File.readlines("testfile.txt").grep(/monitor/)
  do something
end

它应该是 == "nil"吗?我对 ruby​​ 很陌生,不确定输出是什么。

最佳答案

我会使用:

if File.readlines("testfile.txt").grep(/monitor/).any?

if File.readlines("testfile.txt").any?{ |l| l['monitor'] }

使用 readlines 存在可伸缩性问题,因为它将整个文件读入数组。相反,使用 foreach 将完成同样的事情而没有可伸缩性问题:

if File.foreach("testfile.txt").grep(/monitor/).any?

if File.foreach("testfile.txt").any?{ |l| l['monitor'] }

有关可扩展性问题的更多信息,请参见“Why is "slurping" a file not a good practice?”。

关于ruby - 检查文件是否包含字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8408388/

相关文章:

ruby - 冒号的意义 : in Ruby

javascript - 当我使用 === 而不是 !== 时,为什么更改 "if"条件会给出不同的答案?

c# - 如何让控制台读取所有条件

python - (Python)试图让 "if not in"工作,它正在搜索一个 frozenset

if-statement - 仅当 cookie 存在时,如何有条件地覆盖 nginx 中的 header ?

python - 如何使 Ruby 或 Python 网站使用多核?

windows - Windows 中 Ruby 的 GUI 编辑器

ruby - 在 Balanced Ruby 客户端中使用 Faraday 阻止网络调用的最佳方法是什么?

ruby-on-rails - 时区困惑(1小时)

MYSQL INSERT IF SUM > CONSTANT