8

\n当我用红宝石打印字符串时,我想保留,

就像现在,如果我使用putsor print\n将以换行符结束:

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

有没有办法让 ruby​​ 像这样打印出来:abc\nabc

更新

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

4

6 回答 6

14

我建议使用p而不是puts/ print

p "abc\nabc"
=> "abc\nabc"

事实上,pry你不需要使用它们中的任何一个,只需输入你的字符串并输入:

str = "abc\nabc"
=> "abc\nabc"
str
=> "abc\nabc"
于 2012-11-24T06:34:29.430 回答
2

因为 \n 是一个特殊关键字,你必须通过在特殊关键字之前添加一个反斜杠来对其进行转义(因此,反斜杠也必须转义),如下所示abs\\nabc:如果您想打印\\n,则必须将其替换为abs\\\\n,依此类推(两个反斜杠以显示反斜杠)。

您也可以只使用单引号而不是双引号,这样特殊关键字就不会被解释。恕我直言,这是不好的做法,但是如果它使您的代码看起来更好,我想这是值得的 :)

以下是一些您可以逃脱的方法示例(有点像 TL;DR 版本):

puts 'abc\nabc' # Single quotes ignore special keywords
puts "abc\\nabc" # Escaping a special keyword (preferred technique, IMHO)
p "abc\nabc" # The "p" command does not interpret special keywords
于 2012-11-24T06:29:57.013 回答
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 
于 2012-11-24T06:31:31.770 回答
1

你也可以这样做

puts 'abc\nabc'
于 2012-11-24T09:37:01.287 回答
0

使用 %q 创建一个字符串,例如:

  str = %q{abc\nklm}
  puts str #=> 'abc\nklm'

或者

  puts %q{abc\nklm}

或使用转义字符

  puts "abc\\nklm"
于 2012-11-24T06:30:39.190 回答
0

要打印字符串:abc\nabc 编码字符串必须是:abc\\nabc不会生成换行符。

于 2020-04-09T05:58:59.433 回答