\n
当我用红宝石打印字符串时,我想保留,
就像现在,如果我使用puts
or print
,\n
将以换行符结束:
pry(main)> print "abc\nabc"
abc
abc
有没有办法让 ruby 像这样打印出来:abc\nabc
?
更新
对不起,也许我没有说得更清楚。我正在调试我的正则表达式,所以当我输出一个字符串时,如果 a\n
显示为 a \n
,而不是换行符,我会更容易检查。所以@slivu 的答案正是我想要的。多谢你们。
\n
当我用红宝石打印字符串时,我想保留,
就像现在,如果我使用puts
or print
,\n
将以换行符结束:
pry(main)> print "abc\nabc"
abc
abc
有没有办法让 ruby 像这样打印出来:abc\nabc
?
更新
对不起,也许我没有说得更清楚。我正在调试我的正则表达式,所以当我输出一个字符串时,如果 a\n
显示为 a \n
,而不是换行符,我会更容易检查。所以@slivu 的答案正是我想要的。多谢你们。
我建议使用p
而不是puts
/ print
:
p "abc\nabc"
=> "abc\nabc"
事实上,pry
你不需要使用它们中的任何一个,只需输入你的字符串并输入:
str = "abc\nabc"
=> "abc\nabc"
str
=> "abc\nabc"
因为 \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
在 Ruby 中,不会插入单引号文字中的字符串,例如 'abc\nabc'。
1.9.3p194 :001 > print 'abc\nabc'
abc\nabc => nil
vs 带双引号
1.9.3p194 :002 > print "abc\nabc"
abc
abc => nil
你也可以这样做
puts 'abc\nabc'
使用 %q 创建一个字符串,例如:
str = %q{abc\nklm}
puts str #=> 'abc\nklm'
或者
puts %q{abc\nklm}
或使用转义字符
puts "abc\\nklm"
要打印字符串:abc\nabc
编码字符串必须是:abc\\nabc
不会生成换行符。