Python 2.6では、str.format()既存の%演算子とは構文が少し異なるメソッドが導入されました。どちらがより適切で、どのような状況に適していますか? 以下はそれぞれの方法を使用し、同じ結果をもたらすので、違いは何ですか? #!/usr/bin/python sub1 = "python string!" sub2 = "an arg" a = "i am a %s" % sub1 b = "i am a {0}".format(sub1) c = "with %(kwarg)s!" % {'kwarg':sub2} d = "with {kwarg}!".format(kwarg=sub2) print a # "i am a python string!" print b # "i am a …
ログ出力などのために、常に文字列を構築する必要があります。JDKバージョンでStringBufferは、(多くの追加、スレッドセーフ)とStringBuilder(多くの追加、非スレッドセーフ)をいつ使用するかを学びました。 使用についてのアドバイスは何String.format()ですか?それは効率的ですか、またはパフォーマンスが重要なワンライナーの連結に固執する必要がありますか? 例えば醜い古いスタイル、 String s = "What do you get if you multiply " + varSix + " by " + varNine + "?"; 整頓された新しいスタイル(String.format、おそらく遅い)、 String s = String.format("What do you get if you multiply %d by %d?", varSix, varNine); 注:私の具体的な使用例は、コード全体で何百もの「ワンライナー」ログ文字列です。彼らはループを含まないので、StringBuilderヘビー級です。String.format()特に興味があります。
Kotlinには、文字列テンプレートと呼ばれる優れた機能があります。私はそれを本当に愛しています。 val i = 10 val s = "i = $i" // evaluates to "i = 10" しかし、テンプレートに書式を設定することは可能ですか?たとえば、kotlinの文字列テンプレートでDoubleをフォーマットしたいのですが、少なくとも小数点の後に桁数を設定します。 val pi = 3.14159265358979323 val s = "pi = $pi??" // How to make it "pi = 3.14"?
Pythonでは、文字列をフォーマットするときに、次のように、位置ではなく名前でプレースホルダーを埋めることができます。 print "There's an incorrect value '%(value)s' in column # %(column)d" % \ { 'value': x, 'column': y } 私はそれがJavaで可能であれば(おそらく、外部ライブラリなしで)可能ですか?