次のように、通常のstrings.xmlリソースファイルに文字列が定義されています:
<string name="hello_world"> HELLO</string>
以下のようなフォーマット文字列を定義することは可能ですか?
result_str = String.format("Amount: %.2f for %d days ", var1, var2);
strings.xmlリソースファイルに?
特殊文字をエスケープしようとしましたが、機能しませんでした。
XMLでformatted="false"
を使用する必要はありません。短いバージョンではなく、%[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リソースを定義します。
<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 Docs からの引用:
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);