首页 > 解决方案 > Ruby - 在新行中追加数据而不引入空行

问题描述

我已经有一行fd.txt,当我插入三行多行时,第一行紧跟在现有数据之后。这是一个例子:

fd.txt

This is past data.

新数据

Line 1
Line 2
Line 3

当我运行以下代码时:

open('fd.txt', 'a+') { |file|
  file.puts "Line 1"
  file.puts "Line 2"
  file.puts "Line 3"
}

我得到以下输出:

This is past data.Line 1
Line 2
Line 3

但是,我需要Line 1从第二行。所以我添加"\n"了,file.puts "\nLine 1"但这在之前添加了一个额外的空行Line 1。我应该对我的代码进行什么更新以获得以下输出:

This is past data.
Line 1
Line 2
Line 3

标签: ruby

解决方案


不是很优雅,但您可以检查最后一个字符是否为 a\n并添加一个:(我假设您不知道文件是否以换行符结尾)

open('fd.txt', 'a+') do |file|
  file.puts unless file.pread(1, file.size - 1) == "\n"

  file.puts "Line 1"
  file.puts "Line 2"
  file.puts "Line 3"
end

当然,首先不要缺少换行符会更好。


推荐阅读