不知道這個詞的叫法,但是在Python如果鍵入Ruby的字符串替換
num1 = 4
num2 = 2
print("Lucky numbers: %d %d" %(num1, num2))
你得到「幸運數字:4 2」(替換嗎?)
我該怎麼辦這在紅寶石?
試圖做到上面的場景,它有效,如果我有一個變量,但如果我需要分在多個變量括號是無效的語法。
不知道這個詞的叫法,但是在Python如果鍵入Ruby的字符串替換
num1 = 4
num2 = 2
print("Lucky numbers: %d %d" %(num1, num2))
你得到「幸運數字:4 2」(替換嗎?)
我該怎麼辦這在紅寶石?
試圖做到上面的場景,它有效,如果我有一個變量,但如果我需要分在多個變量括號是無效的語法。
num1 = 4
num2 = 2
print "Lucky numbers: %d %d" % [num1, num2]
你可以在Ruby中使用一個叫做String interpolation的東西來實現這一點。
例如:
num1 = 4
num2 = 2
puts "Lucky numbers: #{num1} #{num2}";
在此,每個變量是#內部{}的解釋而不是作爲一個字符串,但作爲變量名和值被取代。
它被稱爲打印格式。
Checkout的例子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 >
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
讀了。
最能模仿這種語法在Python Ruby的方法是sprintf
和format
,這是相互的別名。您可以在Ruby Docs中深入瞭解它們。
下面是一個例子:
num1 = 4
num2 = 2
sprintf("Lucky numbers: %d %d", num1, num2)
這將輸出: 「幸運數字:4 2」
括號當然可選的。
您還可以使用散列進行字符串替換。如果您有多個需要用相同字符串替換的實例,這非常有用。
p "%{foo} == %{foo}" % {:foo => "bar" }
# => "bar == bar"
注意,這解決了整數的具體需求,通常是一個很好的Ruby的成語,但不允許sprintf的格式,比如'「%.3f」' – Phrogz 2012-04-27 20:28:22
@Phrogz正確的,但問題是關於替代,不格式化。 – 2012-04-27 20:29:44
也許我正在尋找格式。我只是想能夠創建這樣的字符串,然後將它們傳遞給其他方法 – MxyL 2012-04-27 20:37:18