贴出一个简单的异常,分析一下原因,以及推荐一个相对好一些的替代方法。 如下,如果我们进行字符串格式化提供的值的数量少于字符串格式符(%s)的数量,就会抛出MissingFormatArgumentException异常。
lineos:false
1 2 | String format = "%s/%s"; String.format(format, "a"); |
---|
lineos:false
1 2 3 4 5 6 | Exception in thread "main" 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) at Concatenation.testFormat(Concatenation.java:17) at Concatenation.main(Concatenation.java:4) |
---|
相比字符串的格式化操作,使用字符串的替换更加安全,避免因为疏忽或者考虑不全等带来的崩溃问题。
lineos:false
1 | String s = "%country%/%city%".replace("%country%", "China").replace("%city%", "Beijing"); |
---|