ruby – 如何打开文件并搜索一个字?

前端之家收集整理的这篇文章主要介绍了ruby – 如何打开文件并搜索一个字?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何使用 Ruby打开文件并在其中搜索一个单词?

解决方法

所有呈现的解都具有O(n)的时间复杂度.为了简单起见,我使用String#include?检查这个词.这可以使用正则表达式以字符串=〜regex的形式进行.

阅读完整的文件并在其中搜索.

File.read(filename).include?(word)

如果您的文件非常大,这不是最佳解决方案,因为您将完整的文件读入内存并开始搜索.你的内存复杂度是O(n)

逐行读取文件并在每行中进行搜索

File.open(filename) do |f|
  f.any? do |line|
    line.include?(word)
  end
end

如果你的文件很大,但是你知道你的行是一个恒定值的上限,你现在的内存复杂度为O(1).

读取文件块并搜索

File.open(filename) do |f|
  tmp= f.read(1024)
  next true if tmp.include?(word)
  until f.eof?
    tmp= tmp[(-1*word.size)..-1] + f.read(1024)
    next true if tmp.include?(word)
  end
  next false
end

在这个变体中,我们从文件中读取等大小的块.所以无论文件的条件如何,我们的内存复杂度都是O(1)

猜你在找的Ruby相关文章