ruby - file.each_char 在 Ruby 中的 file.each_line 之后不能正常工作

标签 ruby file

我正在尝试在 file.each_line 之后立即执行 file.each_char,但它永远不会像这样被调用。如果我去掉 file.each_linefile.each_char 调用将完美运行。

这是我的引用代码:

file.each_line do |line|
  if line =~ /^\s*$/
    next
  end
  lines += 1
end

file.each_char do |char|
  if char =~ /\s/
    next
  end
  chars += 1
end

如何在 file.each_line 之后管理 file.each_char 调用?

最佳答案

当您运行 each_line 时,它将指向您的 IO 流(在本例中为文件)的末尾。要第二次遍历整个文件,您需要将其重置为指向流的开头。 IO#rewind 将为您完成此操作:

file.each_line do |line|
  if line =~ /^\s*$/
    next
  end

  lines += 1
end

file.rewind

file.each_char do |char|
  if char =~ /\s/
    next
  end

  chars += 1
end

关于ruby - file.each_char 在 Ruby 中的 file.each_line 之后不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5993557/

相关文章:

ruby-on-rails - Ruby 尝试不处理异常

ruby-on-rails - Salesforce 数据库 dotcom gem : Query doesn't return right results

android - Android App Dev:关于如何编码来自远程ftp服务器的文件的音频流的任何示例/建议?

c++ - 文件输入输出

ruby - 仅当非零时才赋值

ruby - 无法使用 Ruby Mechanize 登录亚马逊

java - 在 Java 中与多个打开的应用程序共享文件存储索引

c - fseek,到文件的最后一个字节是什么意思?

java - java中的新文件路径,没有新的对象实例

ruby - RSpec - 跨路线测试多个期望