所以我在这里发现了这个问题,但我对输出以及如何使用 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/