首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在文件中添加新行

如何在文件中添加新行
EN

Stack Overflow用户
提问于 2014-11-03 07:06:24
回答 2查看 1.7K关注 0票数 1

我想在下面添加换行符。但结果是错误的。告诉我怎么回事。

Test.txt(前)

代码语言:javascript
复制
------------------
2014-09
2014-10
2014-11
------------------

Test.txt(后)

代码语言:javascript
复制
------------------
2014-09
2014-10

2014-11
------------------

我做了一个红宝石脚本下面,但结果是错误的。

代码语言:javascript
复制
f = File.open("test.txt","r+")
f.each{|line|
  if line.include?("2014-10")
    f.puts nil 
  end
}
f.close

结果

代码语言:javascript
复制
------------------
2014-09
2014-10

014-11
------------------
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-03 08:37:20

同时读取和写入文件可能会变得混乱,与数组等其他数据结构一样。您应该在进行过程中构建一个新文件。

一些注意事项:

  • 您应该使用File.open的块形式,因为它将阻止您忘记调用f.close
  • puts nil与没有参数的puts相同
  • 当不需要字符串插值时,单引号比双引号更好
  • 对于多行块,您应该使用do ... end而不是{ ... }
  • File.open(...).each可以用File.foreach代替
  • 中间结果可以存储在StringIO对象中,该对象将响应puts等。

示例:

代码语言:javascript
复制
require 'stringio'

file = 'test.txt'
output = StringIO.new

File.foreach(file) do |line|
  if line.include? '2014-10'
    output.puts
  else
    output << line
  end
end

output.rewind

File.open(file, 'w') do |f|
  f.write output.read
end
票数 1
EN

Stack Overflow用户

发布于 2014-11-03 08:17:47

要解决问题,最简单的方法是创建一个新文件,将新文本输出到其中。为此,您需要打开输入文件和输出文件,并迭代文件的每一行,检查条件并将所需的行放入输出文件中。

示例

代码语言:javascript
复制
require 'fileutils'

File.open("text-output.txt", "w") do |output|
  File.foreach("text.txt") do |line|
    if line.include?("2014-10")
      output.puts line + "\n"
    else
      output.puts line
    end
  end
end

FileUtils.mv("text-output.txt", "text.txt")

易道

代码语言:javascript
复制
File.write(f = "text.txt", File.read(f).gsub(/2014-10/,"2014-10\n"))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26709355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档