次のような通常の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ドキュメントからの引用:文字列のフォーマットとスタイル:
<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));
formatted="false"
が、文字列がフォーマットされないことを意味する可能性があるため、混乱する可能性があります。別のソリューションを投稿しましたstackoverflow.com/a/20887690/228429
String.format(getString(R.string.all), 3.12, 2)
この方法で簡略化できることに注意してくださいgetString(R.string.all, 3.12, 2)
。
25%
、Androidがクラッシュします。
ファイル内で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ドキュメントからの引用:
を使用して文字列をフォーマットする必要がある場合
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);
私にとっては、それはコトリンでそのように機能しました:
私のstring.xml
<string name="price" formatted="false">Price:U$ %.2f%n</string>
私のclass.kt
var formatPrice: CharSequence? = null
var unitPrice = 9990
formatPrice = String.format(context.getString(R.string.price), unitPrice/100.0)
Log.d("Double_CharSequence", "$formatPrice")
D / Double_CharSequence:価格:U $ 99,90