168

次のように、通常のstrings.xmlリソースファイルで文字列を定義しています。

<string name="hello_world"> HELLO</string>

以下のようなフォーマット文字列を定義することは可能ですか?

 result_str = String.format("Amount: %.2f  for %d days ",  var1, var2);

strings.xml リソース ファイルに?

特殊文字をエスケープしようとしましたが、うまくいきません。

4

5 に答える 5

297

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);
于 2014-01-02T16:55:07.243 に答える
106

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));
于 2012-09-27T18:15:25.260 に答える
16

ファイル内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 メソッドは必要ありません。)

于 2016-03-14T11:04:31.967 に答える
9

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);
于 2014-06-07T14:51:28.767 に答える