我有一个像这样的String格式化程序:
String testLogMessage = String.format("testing %s scenario %s", "BIG");
logger.info(String.format(testLogMessage, 1));
我有几个测试,想要将一个数字传递给我的testLogMessage。在运行时,我得到了这个例外:
java.util.MissingFormatArgumentException: Format specifier '%s'
at java.util.Formatter.format(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.lang.String.format(Unknown Source)
我可以使用第二个字符串格式化程序,但还有另一种方法吗?
答案 0 :(得分:3)
第一次调用String.format
需要满足两个占位符,但只传递一个值,提示异常。
要让结果字符串包含占位符,以便下次调用String.format
,您可以escape the %
sign使用另一个%
符号。
'%'%结果是文字'%'('\ u0025')
String testLogMessage = String.format("testing %s scenario %%s", "BIG");
这将生成字符串"testing BIG scenario %s"
,您可以在第二次String.format
调用中使用该字符串。您希望它是%d
,因此您可以传递int
。
String testLogMessage = String.format("testing %s scenario %%d", "BIG");