以编程方式与 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 中的无效字符串,但 '\' 是有效的。