如何检查一个文件的内容是否包含在ruby中的另一个文件中

时间:2017-03-25 15:55:43

标签: ruby ruby-on-rails-5

我正在尝试检查一个文件的内容是否包含在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.txtscrapped.txt具有相同的内容......但else中的代码是始终执行的代码...任何帮助都将受到高度赞赏

1 个答案:

答案 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