以编程方式与puts -ruby等效进行交互

时间:2017-01-11 23:58:50

标签: ruby-on-rails ruby string-interpolation

我有一个字符串,我需要保存转义,然后需要以编程方式进行交互而不需要任何退格:

    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_name}& last =#{last_name}以分配给我可以扫描的变量,该变量没有“\”字符?

1 个答案:

答案 0 :(得分:0)

这两个是等价的:

# double quotes
"first=\#{first_name}&last=\#{last_name}"

# single quotes
'first=#{first_name}&last=#{last_name}'

在这两种情况下,反斜杠实际上都不是字符串的一部分。如果说string.include? '\',它将返回false。

但是,如果您要说'\#{}',则反斜杠将成为字符串的一部分。这是因为在单引号中,#{}不进行插值,但会被解释为文字字符。

一些例子:

foo = 1
'#{foo}' # => "\#{foo}"
"#{foo}" # => "1"
'#{foo}' == "\#{foo}" # => true
"\#{foo}".include? '\' # => false
'\#{foo}'.include? '\' # => true

请注意,"\"是ruby中的无效字符串,但'\'有效。

相关问题