单引号字符串字符串插值
Single quote string string interpolation
我正在尝试使用 Rails 在 ActionMailer 中设置电子邮件地址。在它被硬编码之前,但我们现在想让它们成为 ENV 变量,这样我们就不需要在每次电子邮件更改时都修改代码。
目前的定义如下:
from = '"Name of Person" <email@email.com>'
我试过使用 ENV['EMAIL']
将电子邮件设置为环境变量,但即使使用 #{ENV['EMAIL'}
也没有成功。
任何人都可以指出我正确的方向吗?
您不能在 Ruby 中对单引号字符串使用字符串插值。
但是双引号字符串可以!
from = "'Name of Person' <#{ENV['EMAIL']}>"
但是如果你想用双引号包裹 Name of Person
,你可以用反斜杠转义它们 \
:
from = "\"Name of Person\" <#{ENV['EMAIL']}>"
或使用字符串连接:
from = '"Name of Person" <' + ENV['EMAIL'] + '>'
# but I find it ugly
如果你想在一个内插字符串中嵌入双引号,你可以使用 % 符号定界符(Ruby 从 Perl 偷来的),例如
from = %|"Name of Person", <#{ENV['EMAIL']}>|
或
from = %("Name of Person", <#{ENV['EMAIL']}>)
只需在字符串中没有的 %
之后选择一个分隔符。
您也可以使用format
。我没有看到它在 Ruby 中像在其他语言(例如 C,Python)中那样普遍使用,但它同样有效:
from = format('"Name of Person", <%s>', ENV["EMAIL"])
使用 %
运算符的替代语法:
from = '"Name of Person", <%s>' % ENV["EMAIL"]
这是 format
(又名 sprintf
)的文档:
我正在尝试使用 Rails 在 ActionMailer 中设置电子邮件地址。在它被硬编码之前,但我们现在想让它们成为 ENV 变量,这样我们就不需要在每次电子邮件更改时都修改代码。
目前的定义如下:
from = '"Name of Person" <email@email.com>'
我试过使用 ENV['EMAIL']
将电子邮件设置为环境变量,但即使使用 #{ENV['EMAIL'}
也没有成功。
任何人都可以指出我正确的方向吗?
您不能在 Ruby 中对单引号字符串使用字符串插值。
但是双引号字符串可以!
from = "'Name of Person' <#{ENV['EMAIL']}>"
但是如果你想用双引号包裹 Name of Person
,你可以用反斜杠转义它们 \
:
from = "\"Name of Person\" <#{ENV['EMAIL']}>"
或使用字符串连接:
from = '"Name of Person" <' + ENV['EMAIL'] + '>'
# but I find it ugly
如果你想在一个内插字符串中嵌入双引号,你可以使用 % 符号定界符(Ruby 从 Perl 偷来的),例如
from = %|"Name of Person", <#{ENV['EMAIL']}>|
或
from = %("Name of Person", <#{ENV['EMAIL']}>)
只需在字符串中没有的 %
之后选择一个分隔符。
您也可以使用format
。我没有看到它在 Ruby 中像在其他语言(例如 C,Python)中那样普遍使用,但它同样有效:
from = format('"Name of Person", <%s>', ENV["EMAIL"])
使用 %
运算符的替代语法:
from = '"Name of Person", <%s>' % ENV["EMAIL"]
这是 format
(又名 sprintf
)的文档: