Ruby字符串替换

时间:2012-04-27 20:19:33

标签: ruby

不知道这个术语叫什么(替换?),但是在python中输入

num1 = 4  
num2 = 2  
print("Lucky numbers: %d %d" %(num1, num2))

你得到“幸运数字:4 2”

我如何在ruby中执行此操作?

尝试执行上述方案时,如果我有一个变量,它可以工作,但如果我需要在多个变量中进行子操作,则括号不是有效的语法。

6 个答案:

答案 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方法是sprintfformat,它们是彼此的别名。您可以在Ruby Docs中深入了解它们。

以下是一个例子:

num1 = 4
num2 = 2
sprintf("Lucky numbers: %d %d", num1, num2)

这将输出:“幸运数字:4 2”

括号当然是可选的。