Ruby 相当于 python 的 .format() 的字符串插值

Ruby string interpolation equivalent to python's .format()

在python我能做到

_str = "My name is {}"
...
_str = _str.format("Name")

在ruby时我尝试

_str = "My name is #{name}"

解释器抱怨变量 name 未定义,因此期待

_str = "My name is #{name}" => {name =: "Name"}

如何在 ruby 中添加一个字符串占位符供以后使用?

您可以使用延迟插值。

str = "My name is %{name}"
# => "My name is %{name}"

puts str % {name: "Sam"}
# => "My name is Sam"

Ruby 中的 %{} 和 % 运算符允许将字符串插值延迟到以后。 %{} 定义字符串中的命名占位符,% 将给定输入绑定到占位符。

解释器不需要散列,它需要一个名为 name.

的变量
name = "Sam"
p str = "My name is #{name}" # => "My name is Sam"

% 方法可以像@rastasheep 演示的那样使用。可以用更简单的方式使用:

str = "My name is %s"
p str % "Name" # => "My name is Name"

根据前面的回答,为了简单和灵活,您可以使用 %s 代替 {}。如果您有多个未命名的占位符,请使用数组而不是字符串。

_str = "%s is a %s %s"
...
_str % %w(That nice movie)  # => "That is a nice movie"