web-dev-qa-db-ja.com

strings.xmlのドットの後に2桁の二重パラメーター?

strings.xmlの1つの文字列にパラメーターを設定したいのですが、このパラメーターはdouble値にする必要があります。したがって、私は%1$fを使用します。ここ- http://developer.Android.com/reference/Java/util/Formatter.html 多くの例がありますが、いくつかのdouble/floatパラメータと2つ目だけに.の後に2桁の数字を入れたいですか? %2$.2f%2.2$fのような組み合わせを使用しようとしました。それらのどれも働いていませんでした。 %.1fも機能しません。それで、float/double内のstrings.xml値を「カスタマイズ」する方法を誰かが知っていますか?ありがとう。

44
lomza

@David Airamの答えをここに追加するだけです。彼が与える「正しくない」解決策は実際には正しいですが、少し調整が必要です。 XMLファイルには次のものが含まれている必要があります。

_<string name="resource1">Hello string: %1$s, and hello float: %2$.2f.</string>
_

Javaコード:

_String svalue = "test";
float sfloat= 3.1415926;
String sresult = getString(R.string.resource1, svalue, sfloat);
_

@David Airamが報告した例外は、Stringを_%f_でフォーマット指定子にジャムしようとすることであり、浮動小数点型が必要です。 floatを使用してください。そのような例外はありません。

また、入力データが最初に文字列であった場合(たとえば、EditTextなどから)、Float.valueOf()を使用して文字列を浮動小数点数に変換できます。ただし、この例外はチェックされていないため、always try/catch valueOf()操作を実行し、NumberFormatExceptionケースを処理する必要があります。

124
Nik Reiman

%.1fは、「、」の後に1桁だけを表示したい場合に役立ちます

4
Wael Ouni

定義はstrings.xmlファイルです

  <string name="price_format">$%,.2f</string>

//For using in databinding  where amount is double type
    Android:text="@{@string/price_format(model.amount)}"

//For using in Java runtime where priceOfModifier is double type
                amountEt.setText(context.getResources().getString(R.string.price_format, priceOfModifier));
2
Aditya Rohilla