2017-03-25 22 views
0

我想檢查是否一個文件的內容都包含在紅寶石另一個文件中的另一個文件..如何檢查一個文件的內容都包含在紅寶石

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

什麼是「廢料」?什麼是「上傳」?當你迭代一個數組時,你會在每個循環中獲得一個元素。 'upload_lines'應該是'upload_line'。爲什麼'scrapped_doc'不是'scrapped.txt'? –

+0

對不起......他們分別是'scrapped_doc'和'uploaded_doc' ... –

+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 
+0

謝謝...雖然我正在構建的應用程序是一個剽竊應用程序...通過比較上傳的文檔和存儲在文件中的網頁的報廢數據來檢查複製行的實例... –