以编程方式与 put -ruby 的等效项进行交互
Interacting programmatically with the equivalent of puts -ruby
我有一个字符串,我需要将其保存为转义字符,然后需要在没有任何退格的情况下以编程方式与之交互:
string = 'first=#{first_name}&last=#{last_name}'
p string.to_s
=> "first=\#{first_name}&last=\#{last_name}"
puts string.to_s
=> first=#{first_name}&last=#{last_name}
我如何让 first=#{first_name}&last=#{last_name} 分配给一个我可以扫描但没有“\”字符的变量?
这两个是等价的:
# double quotes
"first=\#{first_name}&last=\#{last_name}"
# single quotes
'first=#{first_name}&last=#{last_name}'
在这两种情况下,反斜杠实际上都不是字符串的一部分。如果说 string.include? '\'
它将 return false.
但是,如果您说 '\#{}'
,则反斜杠将成为字符串的一部分。那是因为在单引号中,#{}
不插入而是被解释为文字字符。
一些例子:
foo = 1
'#{foo}' # => "\#{foo}"
"#{foo}" # => "1"
'#{foo}' == "\#{foo}" # => true
"\#{foo}".include? '\' # => false
'\#{foo}'.include? '\' # => true
请注意 "\"
是 ruby 中的无效字符串,但 '\'
是有效的。
我有一个字符串,我需要将其保存为转义字符,然后需要在没有任何退格的情况下以编程方式与之交互:
string = 'first=#{first_name}&last=#{last_name}'
p string.to_s
=> "first=\#{first_name}&last=\#{last_name}"
puts string.to_s
=> first=#{first_name}&last=#{last_name}
我如何让 first=#{first_name}&last=#{last_name} 分配给一个我可以扫描但没有“\”字符的变量?
这两个是等价的:
# double quotes
"first=\#{first_name}&last=\#{last_name}"
# single quotes
'first=#{first_name}&last=#{last_name}'
在这两种情况下,反斜杠实际上都不是字符串的一部分。如果说 string.include? '\'
它将 return false.
但是,如果您说 '\#{}'
,则反斜杠将成为字符串的一部分。那是因为在单引号中,#{}
不插入而是被解释为文字字符。
一些例子:
foo = 1
'#{foo}' # => "\#{foo}"
"#{foo}" # => "1"
'#{foo}' == "\#{foo}" # => true
"\#{foo}".include? '\' # => false
'\#{foo}'.include? '\' # => true
请注意 "\"
是 ruby 中的无效字符串,但 '\'
是有效的。