我正在尝试检查一个文件的内容是否包含在ruby中的另一个文件中。
uploaded_doc = File.readlines("scrapped.txt")
scrapped_doc = File.readlines("makefile.txt")
uploaded_doc.each do |upload_lines|
if scrapped_doc.include?(upload_lines)
puts "common lines: "
puts upload_lines
else
puts "no common lines detected "
end
end
两个文件makefile.txt
和scrapped.txt
具有相同的内容......但else
中的代码是始终执行的代码...任何帮助都将受到高度赞赏
答案 0 :(得分:0)
您的要求和您尝试实施的算法不匹配。
您的算法只是检查一个数组(uploaded_doc)的元素是否也存在于scrapped_doc中。如果这是你真正想要的,只需:
(uploaded_doc - scrapped_doc).none?
如果uploaded_doc的所有元素都在scrapped_doc中,那将是真的。
现在,回到您的要求,您是否希望确保两个文件的行数完全相同?如果是这样,除了上述内容之外,您还应检查尺寸。
(uploaded_doc - scrapped_doc).none? && uploaded_doc.size == scrapped_doc.size
嗯,这个更好,但还有一个问题。你能搞清楚吗?
提示:
2.2.0 :001 > A = [1,2,2] => [1, 2, 2]
2.2.0 :002 > B = [2,1,1] => [2, 1, 1]
2.2.0 :003 > (A - B).none? && A.size == B.size
=> true