我遇到的问题是每当我将一些值保存到文件时,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
我感谢每一位帮助!
答案 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是一个包含换行符的字符串,write
和gsub
将无济于事。使用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}}