Ruby字符串替换

Ruby字符串替换,ruby,Ruby,我不知道这个术语叫什么(替换?),但是如果您键入 num1 = 4 num2 = 2 print("Lucky numbers: %d %d" %(num1, num2)) 你会得到“幸运数字:42” 我如何在ruby中实现这一点 尝试执行上述场景时,如果我有一个变量,它就可以工作,但是如果我需要在多个变量中添加子变量,括号的语法无效。您可以在Ruby中使用一种称为字符串插值的方法来完成这一任务 例: 在这里,{}中的每个变量不是解释为字符串,而是解释为变量名,并替换值。它被称为打印格

我不知道这个术语叫什么(替换?),但是如果您键入

num1 = 4  
num2 = 2  
print("Lucky numbers: %d %d" %(num1, num2))
你会得到“幸运数字:42”

我如何在ruby中实现这一点


尝试执行上述场景时,如果我有一个变量,它就可以工作,但是如果我需要在多个变量中添加子变量,括号的语法无效。

您可以在Ruby中使用一种称为字符串插值的方法来完成这一任务

例:


在这里,{}中的每个变量不是解释为字符串,而是解释为变量名,并替换值。

它被称为打印格式

查看更多示例

您是否尝试过类似于
%d”%10
?其计算结果为
“10”


有关方法中允许的格式的文档,请阅读。

最接近Python语法的Ruby方法是
sprintf
format
,它们是彼此的别名。你可以在网站上深入了解他们

下面是一个例子:

num1 = 4
num2 = 2
sprintf("Lucky numbers: %d %d", num1, num2)
这将输出:“幸运数字:4 2”


括号当然是可选的。

您也可以使用散列替换字符串。如果有多个实例需要替换为同一字符串,则此选项非常有用

p "%{foo} == %{foo}" % {:foo => "bar" }
# => "bar == bar"

请注意,这解决了对整数的特殊需求,通常是一个很好的Ruby习惯用法,但不允许使用sprintf格式,如
“%.3f”
@Phrogz Correct,但问题是关于替换,而不是格式。也许我要找的是格式。我只是希望能够创建这样的字符串,然后将它们传递给其他用户methods@Keikoku如果你在寻找格式,你应该在你的问题中这样说。你在一个字符串中可以做的插值数量有限制吗?例如,
放置“hello{a}{b}{c}”
n1, n2 = 17, 42
puts "Lucky single number: %d" % n1
puts "Lucky multiple numbers: %d %d" % [ n1, n2 ]
puts "Lucky inline interpolation: #{n1} #{n2}"
num1 = 4  
num2 = 2  
print "Lucky numbers: %d %d" % [num1, num2]
num1 = 4
num2 = 2
sprintf("Lucky numbers: %d %d", num1, num2)
p "%{foo} == %{foo}" % {:foo => "bar" }
# => "bar == bar"