如何在Ruby中使用反斜杠打印字符串
我有一个字符串如何在Ruby中使用反斜杠打印字符串,ruby,string,irb,ruby-1.9.2,backslash,Ruby,String,Irb,Ruby 1.9.2,Backslash,我有一个字符串str=“xyz\123”,我想按原样打印它 IRB给了我一个意想不到的结果。请参阅以下内容:- 1.9.2p290 :003 > str = "xyz\123" => "xyzS" 1.9.2p290 :004 > 关于如何让IRB打印原始字符串,即“xyz\123”,有什么想法吗 谢谢 更新: 我试着逃避它,但出于某种原因,它似乎没有那么简单。请在下面找到我的试用版: 1.9.2p290 :004 > str = "xyz'\'123" =&g
str=“xyz\123”
,我想按原样打印它
IRB给了我一个意想不到的结果。请参阅以下内容:-
1.9.2p290 :003 > str = "xyz\123"
=> "xyzS"
1.9.2p290 :004 >
关于如何让IRB打印原始字符串,即“xyz\123”,有什么想法吗
谢谢
更新:
我试着逃避它,但出于某种原因,它似乎没有那么简单。请在下面找到我的试用版:
1.9.2p290 :004 > str = "xyz'\'123"
=> "xyz''123"
1.9.2p290 :005 > str = "xyz'\\'123"
=> "xyz'\\'123"
1.9.2p290 :006 > str = "xyz'\\\'123"
=> "xyz'\\'123"
1.9.2p290 :007 >
最新答复:
转义标记“\”总是在普通ruby代码中工作,但不总是在“ruby控制台”中工作。因此,我建议您编写一个单元测试:
# escape_token_test.rb
require 'test/unit'
class EscapeTokenTest < Test::Unit::TestCase
def test_how_to_escape
hi = "hi\\backslash"
puts hi
end
end
请参阅@pst的注释。反斜杠字符是转义字符。您可能看到“\n”用于显示新行,这就是原因。“\123”计算83的ASCII码,即“S”。要打印反斜杠,请使用2个反斜杠。因此,您可以使用
str=“xyz\\123”
如何打印反斜杠?
使用两个反斜杠,例如“xyz\\123”
为什么“xyz\123”
计算为“xyzS”
?
在双引号字符串中,\nnn
是一个八进制转义
Thomas,D.(2009)Ruby编程,第329页
所以,八进制123=(64*1)+(8*2)+3
=十进制83
=ASCII
S
很简单。。。尝试转储功能:
mystring = %Q{"Double Quotes"}
p mystring.dump
=> "\"\\\"Double Quotes\\\"\""
p mystring
=>"\"Double Quotes\""
“逃避它”或“阅读教程”。选一个。你可能还需要
.inspect
。我想知道为什么这个问题被否决了。我试过了,它不起作用。它将反斜杠打印两次。输出:“xyz\\123”@boddhisattva,这是正确的,因为REPL打印。检查表单,对于字符串,它是双引号表单,可以“求值”回原始对象的等效形式。尝试:放置str
并进行比较。@pst谢谢。。现在工作。。所以这只是Rails控制台和IRB中的情况。。它不会像“puts str”那样打印?我试过了,它不起作用。它将反斜杠打印两次。输出:“xyz\\123”@boddhisattva,正确无误。请参阅Hophat答案下的我的评论。这与打印反斜杠有什么关系?
mystring = %Q{"Double Quotes"}
p mystring.dump
=> "\"\\\"Double Quotes\\\"\""
p mystring
=>"\"Double Quotes\""