2016-04-15 16 views
0

Rubyでprintfの呼び出しで%を正しくエスケープするにはどうすればよいですか?Rubyでprintfの呼び出しで%を正しくエスケープするにはどうしたらいいですか?

私は(Cのように)%%を使用しようと、

value = 47 
printf "To have a 60%% test average, your final exam must be at least %0.2f.\n" % [value] 

私はこのエラーを取得する:

$ ruby /tmp/test.rb 
/tmp/test.rb:4:in `printf': malformed format string - %t (ArgumentError) 
    from /tmp/test.rb:4:in `<main>' 

文字列の前に%が文字列に補間されていることが表示されますフォーマット引数がチェックされています(つまり、 "... %% test ..."は "... %test ..."と解釈されているようです)。しかし、私はフォーマット文字列を設定する正しい方法を知らない。

答えて

2

あなたは `printfの "..." %の[のP1、P2]`と `printfの違いは何 "..."、p1`

printf "To have a 60%% test average, your final exam must be at least %0.2f.\n",value 
+0

をprintfの引数として値を渡す必要があります。 (私は配列の構文を使用するよう教えられました) – Zack

+0

Rubyでは、stringの%演算子はフォーマット演算子です。 '%06d"%100'を実行すると、printfなしで文字列を書式設定することができます。printfへのパラメータとして配列を渡す理由がわかりません。関数の引数のリストとして配列を渡すような高度なトピックがありますが、単純に保つために、文字列にある各形式のprintfステートメントに単一の値を渡してください。 – dwilkins

+1

@Zack - あなたの配列構文が複数の引数を '%'演算子に渡すためのものであると思われます。 '% 'を使用している場合は' printf'は必要ありません。 – dwilkins

関連する問題