【问题标题】:I'm tyring to remove a line from a file我正在尝试从文件中删除一行
【发布时间】:2015-12-01 04:12:05
【问题描述】:

我的代码有问题吗?

line = File.readlines("file.txt").sample(1)[0]
puts line

def remove_lines(fname, line)
    IO.write(fname, IO.read(fname).gsub(/^#{line}\n/, '')) 
end

remove_lines("file.txt", "#{line}")

我尝试在 readlines 中的文件名后添加一个“a”。尝试了一个“rb”和一个“r+”。我只是想让它从file.txt 中读取一行,然后删除正在读取的同一行。请帮忙?

【问题讨论】:

  • line 最后会有一个\n。因此,只有在下一行为空(即您有 \n\n)时,您才能在 remove_lines 中成功。

标签: ruby file-io readline


【解决方案1】:

您可以使用String#strip (line.strip) 从line 中去除前导和尾随空白字符(如果有)。另外,从gsub 中删除\n

def remove_lines(fname, line)
   IO.write(fname, IO.read(fname).gsub(/^#{line.strip}/, '')) 
end

这样就可以了,您的代码将按预期工作。

【讨论】:

  • 我使用了 inspect 并看到了引号,但没有看到 \n 。不管我在括号中使用了你的 .strip 方法,并且项目 stll 没有被删除。
  • 真的吗?它对我来说很好。你能给我你正在尝试的文本文件吗?
  • 这取决于文本文件的内容。请向我们展示文本文件的内容,以便我们提供帮助。
  • 它实际上只是一个字 theerealoshae in file.txt
  • 试试这个:IO.write(fname, IO.read(fname).gsub(/^#{line.strip}/, ''))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-03
  • 1970-01-01
  • 2012-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多