不知道这个术语叫什么(替换?),但是在python中输入
num1 = 4
num2 = 2
print("Lucky numbers: %d %d" %(num1, num2))
你得到“幸运数字:4 2”
我如何在ruby中执行此操作?
尝试执行上述方案时,如果我有一个变量,它可以工作,但如果我需要在多个变量中进行子操作,则括号不是有效的语法。
答案 0 :(得分:27)
你可以在Ruby中使用名为String interpolation的东西来实现这一目标。
例如:
num1 = 4
num2 = 2
puts "Lucky numbers: #{num1} #{num2}";
此处#{}内的每个变量都不是解释为String而是解释为变量名称,并且该值被替换。
答案 1 :(得分:24)
num1 = 4
num2 = 2
print "Lucky numbers: %d %d" % [num1, num2]
答案 2 :(得分:6)
n1, n2 = 17, 42
puts "Lucky single number: %d" % n1
puts "Lucky multiple numbers: %d %d" % [ n1, n2 ]
puts "Lucky inline interpolation: #{n1} #{n2}"
有关String#%
方法允许的格式文档的说明,请参阅Kernel#sprintf
。
答案 3 :(得分:3)
您还可以使用哈希进行字符串替换。如果您有多个需要用相同字符串替换的实例,这将非常有用。
p "%{foo} == %{foo}" % {:foo => "bar" }
# => "bar == bar"
答案 4 :(得分:1)
这称为打印格式。
查看更多示例Ruby Formatted Printing
您是否尝试过"%d"%10
之类的内容?它评估为"10"
1.9.3-p0 :003 > "%02x"%(10)
=> "0a"
1.9.3-p0 :004 >
1.9.3-p0 :005 > print "Nicely formatted string with an int: %d" % 10
Nicely formatted string with an int: 10 => nil
1.9.3-p0 :006 >
答案 5 :(得分:1)
在Python中最接近模仿该语法的Ruby方法是sprintf
和format
,它们是彼此的别名。您可以在Ruby Docs中深入了解它们。
以下是一个例子:
num1 = 4
num2 = 2
sprintf("Lucky numbers: %d %d", num1, num2)
这将输出:“幸运数字:4 2”
括号当然是可选的。