我在通常的 strings.xml 资源文件中定义了如下字符串:
<string name="hello_world"> HELLO</string>
是否可以定义如下所示的格式字符串
result_str = String.format("Amount: %.2f for %d days ", var1, var2);
在 strings.xml 资源文件中?
我试图逃避特殊字符,但它不工作。
应该将 formatted="false"添加到字符串资源中
formatted="false"
这里有一个例子
在你的 strings.xml:
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));
您不需要在 XML 中使用 formatted="false"。您只需要使用完全限定的字符串格式标记 -%[POSITION]$[TYPE](其中 [POSITION]是属性位置,[TYPE]是变量类型) ,而不是简短的版本,例如 %s或 %d。
%[POSITION]$[TYPE]
[POSITION]
[TYPE]
%s
%d
引自 Android Docs: 字符串格式和样式:
<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string> 在此示例中,格式字符串有两个参数: %1$s是 字符串和 %2$d是一个十进制整数 申请中的论点如下: Resources res = getResources(); String text = res.getString(R.string.welcome_messages, username, mailCount);
<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>
在此示例中,格式字符串有两个参数: %1$s是 字符串和 %2$d是一个十进制整数 申请中的论点如下:
%1$s
%2$d
Resources res = getResources(); String text = res.getString(R.string.welcome_messages, username, mailCount);
引自 Android 文档:
如果需要使用 < code > String.format (String, 对象...) ,然后可以通过将格式参数放入 例如,使用以下资源: <string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string> 在本例中,格式化字符串有两个参数: %1$s是一个字符串 %2$d是十进制数。可以用参数格式化字符串 如下: Resources res = getResources(); String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);
如果需要使用 < code > String.format (String, 对象...) ,然后可以通过将格式参数放入 例如,使用以下资源:
在本例中,格式化字符串有两个参数: %1$s是一个字符串 %2$d是十进制数。可以用参数格式化字符串 如下:
Resources res = getResources(); String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);
内部文件 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);
(与 本地电脑人或 Giovanny Farto M.的答案相比,不需要 String.format 方法。)
对我来说,在 Kotlin 就是这样:
我的 string.xml
<string name="price" formatted="false">Price:U$ %.2f%n</string>
我的同学 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 _ CharSeries: 价格: 99,90美元
为了更好的结果,我们可以这样做
<string name="price_to_string">Price:U$ %1$s</string> var formatPrice: CharSequence? = null var unitPrice = 199990 val numberFormat = (unitPrice/100.0).toString() formatPrice = String.format(context.getString(R.string.price_to_string), formatValue(numberFormat)) fun formatValue(value: String) :String{ val mDecimalFormat = DecimalFormat("###,###,##0.00") val s1 = value.toDouble() return mDecimalFormat.format(s1) } Log.d("Double_CharSequence", "$formatPrice")
D/Double _ CharSequence: Price: U $1.999,90价格: U $1.999,90