0

下手な英語でごめんなさい。なぜ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
4

2 に答える 2

2

あなたが書くとき、あなた\" \+ \\+ \\\+ \\\\+ \"は得る" + \+ \+ \\+ "。その後、eval別の二重引用符で囲まれた文字列を含むこの文字列を実行するために使用します。すると、 が得られます+ + + \+

\\=> \
\x=> x(se não for nenhum caso especial, como \n)

于 2011-01-18T19:01:59.870 に答える
0

ruby エスケープは完全に優れています。

eval = 文字列を評価/実行する

于 2011-01-18T19:05:46.153 に答える