String.format() 当参数为空字符串时添加 2 个空格

String.format() adding 2 blank spaces when arguments are empty strings

我有一个简单的方法:

private String toJsonFormat(String name, Object value, boolean first) {
    value = value == null ? "" : value; 
    return String.format((first ? "" : ",") + "\"%1s\":\"%2s\"", name, value);
}

当我的 value 参数是 null 时,冒号后添加了 2 个空格,而不是空字符串。

传递null时的return值示例:

"housenumber":"  "

怎么会?

格式说明符

%2s

表示该字段至少有两个字符宽,space-根据需要进行填充。

如果你的意思是"the second string",那就写

%s

这将自动为您提供第二个参数,因为它是您使用的第二个说明符。 %1s 与第一个参数相同。