使用Java中的MessageFormat.format()格式化消息
我在资源包中存储了一些消息。 我试图格式化这些消息如下。
import java.text.MessageFormat; String text = MessageFormat.format("You're about to delete {0} rows.", 5); System.out.println(text);
假设第一个参数即实际的消息被存储在一个属性文件中,该文件以某种方式被检索。
第二个参数,即5是一个dynamic值,应放置在占位符{0}
,这不会发生。 下一行打印,
您即将删除{0}行。
占位符不会被实际参数replace。
这里是撇号 – You're
。 我曾试图像往常一样逃避它,尽pipe它没有奏效。 需要进行哪些更改才能使其工作?
为MessageFormat
模式String
添加一个额外的撇号,以确保显示'
字符”
String text = java.text.MessageFormat.format("You''re about to delete {0} rows.", 5); ^
MessageFormat模式中的撇号(又名单引号 )会启动带引号的string,而不会自行解释。 从javadoc
单引号本身必须用整个string中的双引号“'表示。
String
You\\'re
相当于给String
添加一个反斜杠字符,所以唯一的区别是You\re
将会被生成而不是你。 (在双引号解决scheme应用之前)
只要确定你使用双撇号('')
String text = java.text.MessageFormat.format("You''re about to delete {0} rows.", 5); System.out.println(text);
编辑:
在一个string中,可以使用一对单引号引用除单引号以外的任意字符。 例如,模式string“{0}”代表string“{0}”,而不是FormatElement。 …
任何不匹配的引用在给定模式结束时被视为closures。 例如,模式string“{0}”被视为模式“{0}”。
来源http://docs.oracle.com/javase/7/docs/api/java/text/MessageFormat.html
你需要在“You''re”中使用双撇号而不是单撇号,例如:
String text = java.text.MessageFormat.format("You''re about to delete {0} rows.", 5); System.out.println(text);
对于string.xml中存在Android问题的每个人,请使用\'\'而不是单引号。