如何使用 `"\y"` 获取字符串
How to get a string with `"\y"`
我有一个包含 "\y"
的密码。我得到:
"a\yb" # => "ayb"
'a\yb' # => 'a\yb'
"a\yb" # => "a\yb"
'a\b' # => "a\yb"
而且没有任何效果(例如 concatenation
或 sub
)。
有没有办法不修改密码?
适合我。你能告诉我们一些背景吗?
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
我有一个包含 "\y"
的密码。我得到:
"a\yb" # => "ayb"
'a\yb' # => 'a\yb'
"a\yb" # => "a\yb"
'a\b' # => "a\yb"
而且没有任何效果(例如 concatenation
或 sub
)。
有没有办法不修改密码?
适合我。你能告诉我们一些背景吗?
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