Ruby奇怪的引用

时间:2011-01-18 18:53:04

标签: ruby escaping quote quoting

抱歉英语不好。为什么Ruby引用如此奇怪?或者这可能是一个错误?

irb(main):027:0> p eval "\"    \+     \\+    \\\+     \\\\+    \\\\\+    \"" 

产生

=> "    +     +    +     \\+    \\+    "

irb(main):027:0> puts eval "\"    \+     \\+    \\\+     \\\\+    \\\\\+    \""   

产生

=> +     +    +     \+    \+

或其他例子

irb(main):067:0> "  \"  " =~ Regexp.new(eval("\"  \\\"  \""))   
=> 0

irb(main):068:0> "  +  " =~ Regexp.new(eval("\"  \\\\+  \""))   
=> 0

2 个答案:

答案 0 :(得分:2)

当您撰写\" \+ \\+ \\\+ \\\\+ \"时,您会获得" + \+ \+ \\+ "。之后,使用eval执行此字符串,其中包含另一个双引号字符串。然后,你得到+ + + \+

\\ => \
\x => x(参见nenhum caso especial,como \n

答案 1 :(得分:0)

红宝石逃脱非常好,

eval =评估/执行字符串