ruby - 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
解决方案
不是很优雅,但您可以检查最后一个字符是否为 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
当然,首先不要缺少换行符会更好。
推荐阅读
- c# - 图片框的可滚动面板,滚动时不重新绘制边框
- ios - @3x 图片,Iphone 8 Plus,Iphone X
- apache-spark - Amazon EMR 集群中的无限递归 (StackOverflowError)
- antlr4 - antlr4 生成语法失败
- swift - tableView 功能说明
- sql - 从 SQL Server 表中检索首字母
- css - DOM `hidden` 的预期用途与 CSS `visibility` 属性有何不同?
- database - GraphQL 枚举到 DB 整数而不是字符串
- node.js - 如何在 html 中显示 mongoDB 集合?
- javascript - 未捕获的类型错误:无法使用“in”运算符在未定义中搜索“token”