在Java中,如何将String格式变量占位符传递给另一个String格式化程序?

时间:2015-03-18 16:38:53

标签: java string format

我有一个像这样的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)

我可以使用第二个字符串格式化程序,但还有另一种方法吗?

1 个答案:

答案 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");