Rails:文件充满了尾随空格

时间:2016-12-19 16:19:57

标签: ruby-on-rails ruby file ruby-on-rails-5 puts

我遇到的问题是每当我将一些值保存到文件时,Rails会奇怪地为每一行添加尾随空格。

例如,当我读取文件时,初始内容被操纵了:

"cv" => "cv\r\n"

"cv\r\nvd" => "cv\r\n\r\nvd\r\n"

以下是我创建文件的方法:

File.open(path, "w+") do |f|
    f.truncate(0)
    f.puts value
end

我感谢每一位帮助!

1 个答案:

答案 0 :(得分:1)

理论

如果value没有尾随换行符,则value.chomp不会更改任何内容,因为换行符不是来自value,而是来自puts

  

在任何不支持之后写入记录分隔符(通常是换行符)   已经以换行序列结束。

IO#write是您正在寻找的方法。

最后,f.truncate(0)不需要w+,因为path = "test.txt" value = 2 File.open(path, "w+") do |f| f.write value end p File.read(path) 代表:

  

“w +”读写,将现有文件截断为零长度        或创建一个新的文件进行阅读和写作。

实施例

"2"

返回:

puts

使用write代替"2\n" ,它会返回:

chomp

字符串中的换行符?

如果由于某种原因,value是一个包含换行符的字符串,writegsub将无济于事。使用path = "test.txt" value = "Hello\r\n\r\nWorld\n\nLine #3\r\rLine #4" File.open(path, "w+") do |f| f.write value.gsub(/\R+/,"\n") end p File.read(path) #=> "Hello\nWorld\nLine #3\nLine #4" 只用一个替换多个换行符:

f.write value.gsub(/\R+/," ")

如果你想要空格而不是换行符:

{{1}}