2015-09-19 39 views

回答

0

試試這個:

files = Dir.entries("C:\\Users\\itcuser\\Desktop\\Ruby Programs") 
files.each do |file_name| 
    # skip this, if file_name is a directory 
    next if File.directory? file_name 

    lines = File.readlines(filename) 
    puts file_name if lines.any? { |line| line.include?('def') 
end 
+0

謝謝先生!但它仍然打印所有文件 - >那是 - >它不包括文件中的def語句。我只想要包含def語句的文件名稱 – JDS

+0

@SurabhiGowdaK我更新了我的答案。 –

+0

這段代碼在大文件上的表現會很差。 –

0

嘛,你不使用你的f.any?的返回值打印的文件名。應該更像這樣。

File.open(file_name) do |f| 
    puts file_name if f.any? { |line| line.include?("def") } 
end 
+0

謝謝,我在我的代碼中進行了替換。雖然有一個小錯誤。第一個def語句不顯示。所以如果一個文件只有一個def語句,它就不會顯示出來。 – JDS

+0

@SurabhiGowdaK:不知道爲什麼會發生。必須是代碼中的其他內容會干擾此操作。 –

+0

會檢查出來。非常感謝:) – JDS

相關問題