格式语句在一个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);