2 回答
TA贡献1856条经验 获得超5个赞
%
代表String的格式1$
装置第一附加参数args
的String.format(String format, Object... args)
,2$
将是第二个,等等。-
简而言之,是左对齐,与数字一起声明最终输出的长度。java.util.Formatter的文档解释得更好:左对齐输出。空格('\ u0020')将根据需要在转换值的末尾添加,以填充字段的最小宽度。
s
代表String参数类型
典型的示例是日志记录,其中您解析的参数%s
实际上是相同的。使用美元字符和数字来%1$s
指定参数数字,-10
并使最终输出长度为10。
#mystring00@ // mystring00 has length 10
#mystring0000000@ // mystring0000000 has length 15
#mystring000000000000@ // #mystring000000000000 has length 20
大部分信息可在java.util.Formatter文档中找到,该文档在中使用String::format。
您发现的代码片段可能有点令人困惑,因为即使没有1$参数传递,它也可以正常工作。
请尝试以下操作:String.format("%2$-" + num + "s", str, "test").replace(' ', '0');。结果将是
#test000000@
#test00000000000@
#test0000000000000000@
而String.format("%1$-" + num + "s", str, "test").replace(' ', '0');从您的摘要中得出原始结果。注意1$和的2$区别。
添加回答
举报