如何使用 `"\y"` 获取字符串

How to get a string with `"\y"`

我有一个包含 "\y" 的密码。我得到:

"a\yb" # => "ayb"
'a\yb' # => 'a\yb'
"a\yb" # => "a\yb"
'a\b' # => "a\yb"

而且没有任何效果(例如 concatenationsub)。

有没有办法不修改密码?

适合我。你能告诉我们一些背景吗?

ruby -v
#=> ruby 2.5.3p105 (2018-10-18 revision 65156) [x86_64-linux]
ruby -e 'puts "a\yb"'
#=> a\yb

在您编辑后,问题是使用 p 而不是 puts。例如:

ruby -e 'puts "a\yb"'
#=> a\yb
ruby -e 'p "a\yb"'
#=> "a\yb"

this discussion

当你说:

'a\yb'

然后你得到这个:

"a\yb"

就Ruby而言,这些相同。双引号 (") 内的反斜杠具有特殊含义。单个反斜杠用于指示控制代码,如 \n 表示换行符,或相同的文字版本,如 \ 表示 文字 反斜杠。

试试这个:

puts "a\yb"

然后你就会看到你想要的。 \ 部分只是转义。

当您使用 p 时,您正在呼叫:

puts "a\yb".inspect

inspect 部分将其放回到双引号和转义字符串中,这是您感到困惑的地方。打印字符串,而不是它的 "inspected" 版本。

简单来说p打印obj.inspect输出

查看此内容的简单方法:

irb(main):009:0> string = %q{a\yb}
=> "a\yb"

irb(main):018:0> puts string.inspect
"a\yb"

irb(main):019:0> p string
"a\yb"

irb(main):010:0> puts string
a\yb