19

用語が何と呼ばれているのかわかりませんが(置換?)、Pythonで入力すると

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

あなたは「ラッキーナンバー:42」を手に入れます

ルビーでこれを行うにはどうすればよいですか?

上記のシナリオを実行しようとすると、1つの変数がある場合は機能しますが、複数の変数をサブインする必要がある場合、括弧は有効な構文ではありません。

4

6 に答える 6

31

これを実現するには、Rubyで文字列補間と呼ばれるものを使用できます。

元:

num1 = 4  
num2 = 2  
puts "Lucky numbers: #{num1} #{num2}";

ここで、#{}内にある各変数は、文字列としてではなく変数名として解釈され、値が置き換えられます。

于 2012-04-27T20:22:53.013 に答える
25
num1 = 4  
num2 = 2  
print "Lucky numbers: %d %d" % [num1, num2]
于 2012-04-27T20:28:16.600 に答える
7
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ください。

于 2012-04-27T20:26:40.150 に答える
5

文字列の置換にハッシュを使用することもできます。これは、同じ文字列で置き換える必要のあるインスタンスが複数ある場合に役立ちます。

p "%{foo} == %{foo}" % {:foo => "bar" }
# => "bar == bar"
于 2016-07-26T16:25:36.237 に答える
3

Pythonの構文を最もよく模倣するRubyメソッドは、相互のエイリアスであるとですsprintfそれらについては、 RubyDocsformatで詳しく読むことができます。

次に例を示します。

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

これは次のように出力します:「ラッキーナンバー:42」

もちろん、括弧はオプションです。

于 2012-04-27T20:29:12.057 に答える
1

これは印刷フォーマットと呼ばれます。

その他の例を確認するRuby形式の印刷

あなたはそのようなことを試しました"%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 > 
于 2012-04-27T20:24:31.773 に答える