当我在ruby中打印字符串时,我想保留\n
就像现在一样,如果我使用puts
或print
,\n
会以换行符结束:
pry(main)> print "abc\nabc"
abc
abc
有没有办法让ruby打印出来,如:abc\nabc
?
更新
很抱歉,也许我没有说清楚。我正在调试我的正则表达式,所以当我输出一个字符串时,如果\n
显示为\n
而不是换行符,我会更容易检查。所以@slivu的回答正是我想要的。谢谢你们。
答案 0 :(得分:13)
我建议使用p
代替puts
/ print
:
p "abc\nabc"
=> "abc\nabc"
并且实际上使用pry
您不需要使用其中任何一个,只需输入您的字符串并输入:
str = "abc\nabc"
=> "abc\nabc"
str
=> "abc\nabc"
答案 1 :(得分:2)
因为\ n是一个特殊的关键字,你必须通过在特殊关键字之前添加一个反斜杠来转义它(因此,反斜杠也必须被转义),如下所示:{{ 1}}。如果要打印abs\\nabc
,则必须将其替换为\\n
,依此类推(两个反斜杠以显示反斜杠)。
您也可以使用单引号而不是双引号,以便不会解释特殊关键字。恕我直言,这是不好的做法,但如果它让你的代码看起来更好,我想这是值得的:)
以下是一些可以逃脱的方法示例(有点像TL; DR版本):
abs\\\\n
答案 2 :(得分:2)
在Ruby中,单引号文字中的字符串(如'abc \ nabc')将不会被插值。
1.9.3p194 :001 > print 'abc\nabc'
abc\nabc => nil
vs双引号
1.9.3p194 :002 > print "abc\nabc"
abc
abc => nil
答案 3 :(得分:1)
您也可以这样做
puts 'abc\nabc'
答案 4 :(得分:0)
使用%q创建一个字符串,例如:
str = %q{abc\nklm}
puts str #=> 'abc\nklm'
或
puts %q{abc\nklm}
或使用转义字符
puts "abc\\nklm"
答案 5 :(得分:0)
要打印字符串:abc\nabc
编码字符串必须为:abc\\nabc
,它将不会生成换行符。