格式语句在一个string资源文件中
我有像这样在通常的strings.xml资源文件中定义的string:
<string name="hello_world"> HELLO</string>
是否可以定义如下所示的格式string
result_str = String.format("Amount: %.2f for %d days ", var1, var2);
在strings.xml资源文件中?
我试图逃脱特殊字符,但它不工作。
你应该添加formatted="false"
到你的string资源
这是一个例子
在你的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"
。 您只需要使用完全限定的string格式标记 – %[POSITION]$[TYPE]
(其中[POSITION]
是属性位置, [TYPE]
是variablestypes),而不是短版本,例如%s
或%d
。
来自Android文档的报价:string格式和样式 :
<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>
在这个例子中,格式string有两个参数:
%1$s
是一个string,%2$d
是一个十进制整数。 你可以使用你的应用程序的参数格式化string,如下所示:Resources res = getResources(); String text = res.getString(R.string.welcome_messages, username, mailCount);
在文件strings.xml
里面定义一个String资源,像这样:
<string name="string_to_format">Amount: %1$f for %2$d days%3$s</string>
在你的代码中(假设它从上下文inheritance)只需执行以下操作:
String formattedString = getString(R.string.string_to_format, floatVar, decimalVar, stringVar);
(与LocalPCGuy或Giovanny Farto M的答案相比,不需要String.format方法。)
来自Android文档的报价:
如果您需要使用
String.format(String, Object...)
来格式化string,则可以将格式参数放在string资源中。 例如,使用以下资源:<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>
在这个例子中,格式string有两个参数:
%1$s
是一个string,%2$d
是一个十进制数字。 你可以使用你的应用程序的参数格式化string,如下所示:Resources res = getResources(); String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);