5

在python中我可以做

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

当我尝试时在红宝石中

_str = "My name is #{name}"

解释器抱怨变量未定义,所以它期待

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

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

4

3 回答 3

16

您可以使用延迟插值。

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

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

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

于 2015-03-20T17:20:19.037 回答
0

解释器不需要哈希,它需要一个名为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"
于 2015-03-20T18:25:24.033 回答
0

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

_str = "%s is a %s %s"
...
_str % %w(That nice movie)  # => "That is a nice movie"
于 2016-04-12T11:18:05.717 回答