次のように、通常のstrings.xmlリソースファイルで文字列を定義しています。
<string name="hello_world"> HELLO</string>
以下のようなフォーマット文字列を定義することは可能ですか?
result_str = String.format("Amount: %.2f for %d days ", var1, var2);
strings.xml リソース ファイルに?
特殊文字をエスケープしようとしましたが、うまくいきません。
次のように、通常のstrings.xmlリソースファイルで文字列を定義しています。
<string name="hello_world"> HELLO</string>
以下のようなフォーマット文字列を定義することは可能ですか?
result_str = String.format("Amount: %.2f for %d days ", var1, var2);
strings.xml リソース ファイルに?
特殊文字をエスケープしようとしましたが、うまくいきません。
formatted="false"XML で使用する必要はありません。または などの短いバージョンではなく、完全修飾文字列フォーマット マーカー - %[POSITION]$[TYPE]([POSITION]は属性の位置、は変数の型)を使用するだけで済みます。[TYPE]%s%d
Android Docsからの引用: String Formatting and Styling :
<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>この例では、フォーマット文字列に 2 つの引数
%1$sがあります。 は文字列で、%2$dは 10 進整数です。次のように、アプリケーションからの引数を使用して文字列をフォーマットできます。Resources res = getResources(); String text = res.getString(R.string.welcome_messages, username, mailCount);
formatted="false"文字列リソースに追加する必要があります
ここに例があります
あなたのstrings.xml:
<string name="all" formatted="false">Amount: %.2f%n for %d days</string>
あなたのコードで:
yourTextView.setText(String.format(getString(R.string.all), 3.12, 2));
ファイル内strings.xmlで、次のように文字列リソースを定義します。
<string name="string_to_format">Amount: %1$f for %2$d days%3$s</string>
コード内 (Context から継承されていると仮定) では、次の操作を行うだけです。
String formattedString = getString(R.string.string_to_format, floatVar, decimalVar, stringVar);
( LocalPCGuyまたはGiovanny Farto Mからの回答と比較して、String.format メソッドは必要ありません。)
Android ドキュメントからの引用:
を使用して文字列をフォーマットする必要がある場合は
String.format(String, Object...)、フォーマット引数を文字列リソースに入れることで実行できます。たとえば、次のリソースを使用します。<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>この例では、フォーマット文字列に 2 つの引数
%1$sがあります。 は文字列で、%2$dは 10 進数です。次のように、アプリケーションからの引数を使用して文字列をフォーマットできます。Resources res = getResources(); String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);