我有一个文件"Foo.md"
,其中包含三行:
Foo
Bar
我希望File.read("Foo.md")
返回"Foo\n\nBar"
当我从终端中的irb运行它时会执行此操作,但是当我从诸如
content = File.read('Foo.md')
puts content
返回时将转换为实际返回的行。我需要将该变量作为我的脚本中接下来的单行。
要明确:我不想改变行数,只是调试以确保变量content
作为单行传递。
答案 0 :(得分:3)
答案 1 :(得分:1)
str =
"Foo
Bar"
#=> "Foo\n\n\nBar"
你也可以这样做:
str.gsub(/\n{3,}/,"\n\n")
#=> "Foo\\nnBar"
答案 2 :(得分:1)
通过冥想可以帮助您想象正在发生的事情:
str = <<EOT
Foo
Bar
EOT
str
的内容如下:
str # => "Foo\n\n\nBar\n"
检查它是否以反射方式表示,但是在创建带有嵌入式行尾的字符串时,它是 NOT 您想要使用的内容。你想要如上所示定义它。
str.inspect # => "\"Foo\\n\\n\\nBar\\n\""
在IRB和控制台中查看时, inspect
输出会有所不同。这是你在控制台中看到的内容:
ruby -e 'puts "\n"; puts "\n".inspect'
"\n"
将str
打印到控制台:
puts str
# >> Foo
# >>
# >>
# >> Bar