在 Java 中,如何将字符串格式变量占位符传递给另一个字符串格式化程序?
In Java how do you pass a String format variable placeholder to another String formatter?
我有一个像这样的字符串格式化程序:
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)
我可以使用第二个字符串格式化程序,但还有其他方法吗?
第一次调用String.format
希望两个占位符都满足,但是你只传递了一个值,提示异常。
要让 结果 字符串包含下一次调用 String.format
的占位符,您可以 escape the %
sign 加上另一个 %
符号。
'%' percent The result is a literal '%' ('\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");
我有一个像这样的字符串格式化程序:
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)
我可以使用第二个字符串格式化程序,但还有其他方法吗?
第一次调用String.format
希望两个占位符都满足,但是你只传递了一个值,提示异常。
要让 结果 字符串包含下一次调用 String.format
的占位符,您可以 escape the %
sign 加上另一个 %
符号。
'%' percent The result is a literal '%' ('\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");