Ruby - 当我打印字符串时如何保持\ n

时间:2012-11-24 06:26:26

标签: ruby

当我在ruby中打印字符串时,我想保留\n

就像现在一样,如果我使用putsprint\n会以换行符结束:

pry(main)> print "abc\nabc"
abc
abc

有没有办法让ruby打印出来,如:abc\nabc

更新

很抱歉,也许我没有说清楚。我正在调试我的正则表达式,所以当我输出一个字符串时,如果\n显示为\n而不是换行符,我会更容易检查。所以@slivu的回答正是我想要的。谢谢你们。

6 个答案:

答案 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,它将不会生成换行符。