【问题标题】:Can't parse line from file in ruby无法从 ruby​​ 文件中解析行
【发布时间】:2018-10-02 15:14:13
【问题描述】:

我逐行浏览文件并在每一行中查找单词“BIOS”,因为包含单词 BIOS 的每一行都有我需要的版本号。在我看到该行包含单词“BIOS”后,我想取整行,并将其拆分为一个数组。这是我的代码:

File.open(file).each do |line|
   if line.includes? 'BIOS'
     array = line.split(" ")
   end
end

我遇到的问题是我不断收到错误消息,说“包含?”是一个未定义的方法。有没有更好的方法来解析这个文件的每一行以获得特定的字符串?

【问题讨论】:

  • 你的意思不是include?,不是复数includes?
  • 我知道你的意思,“我一直收到错误...”:它看起来不错,所以如果我再次运行它,它可能会起作用。这没有任何意义,但我希望我们都做到了。你需要相信 Ruby 的话。如果她说一种方法不存在,它不存在。在这里,您应该在String 的文档中查找includes?。然后你就会发现你的错误。唉,我认为其他人不可能从这个问题中学到任何东西,所以你不妨考虑删除它。
  • 考虑使用IO::foreachFile.foreach(file) do |line| ...。顺便说一句,File.superclass #=> IO,这就是为什么你经常看到IO 方法以File 作为接收者。

标签: ruby fileparsing


【解决方案1】:

没错,includes? 在 Ruby 中没有为 String 定义。请改用include?,或[]https://ruby-doc.org/core-2.2.0/String.html#method-i-include-3F

所以代码应该是:

File.open(file).each do |line|
   if line.include? 'BIOS'
     array = line.split(' ')
   end
end

【讨论】:

  • 我认为你几乎不需要重复代码,减去一个's'。你的前两句话就足够了。
猜你喜欢
  • 1970-01-01
  • 2014-03-05
  • 2013-05-22
  • 1970-01-01
  • 2012-06-29
  • 1970-01-01
  • 2015-05-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多