2012-03-10 27 views
56

[OK]を、私たちのすべては、あなたが実行して文字列に変数を含めることができることを知っている必要があります。Java - 文字列内に変数を含める?

String string = "A string " + aVariable; 

が好き、それを行う方法はあります:

つまり
String string = "A string {aVariable}"; 

たなし引用符を閉じてプラス記号を追加します。それは非常に魅力的ではありません。

+0

なぜこのタイプの文字列操作が必要ですか? –

+4

@Chandra理由を聞かないでください。可能であれば説明してください。それは私がそれをすることを好む方法です。ありがとう。 –

+2

Groovyを使うと、あなたは "A $ string $ {aVariable}"を自由に行うことができます。 –

答えて

68

いつでもString.format(....)を使用できます。つまり、

String string = String.format("A String %s %2d", aStringVar, anIntVar); 

私はそれがあなたのために十分に魅力的かどうかはわかりませんが、非常に便利です。構文はprintfとjava.util.Formatterの場合と同じです。特に表形式の数値データを表示したい場合は、これを多く使用しました。

+0

興味深い。これはちょうどそのように見えます。 –

+0

10分が過ぎると、これを答えとしてマークします。 –

+1

これは意見の問題ですが、単純な文字列連結式よりも 'format'がどのように魅力的であるかわかりません。'format'が独自のものとなるところは、パディングや数値書式などが必要なときです。 –

38

これは文字列補間と呼ばれます。それはJavaのようには存在しません。

一つのアプローチは、String.Formatのを使用することです:

String string = String.format("A string %s", aVariable); 

別のアプローチは、このようなVelocityとしてテンプレートライブラリを使用することです。

+1

偉大な心は同じように考える! 1 + –

14

java.text.MessageFormatも、数値引数インデックスを持つ関連する構文を使用します。例えば、以下を含むstring

String aVariable = "of ponies"; 
String string = MessageFormat.format("A string {0}.", aVariable); 

結果は:

A string of ponies. 

より一般的には、クラスは、その数値および時間的なフォーマットのために使用されます。 JFreeChartラベル書式設定の例はhereと記載されています。クラスRCInfoは、ゲームのステータスペインをフォーマットします。

+1

CSharpから来ている人にとっては、C#のstring.Formatに似ているので、この方法ではより簡単です。 – Mojtaba

関連する問題