嵌套格式的Java String格式未显示实际输出

时间:2018-09-14 11:22:23

标签: java string

为什么这在Java中不起作用而在C#中起作用?

String a = "Hello %s";
String b = "World";
String c = String.format("%s", a, b);

println c

预期输出:

Hello World

实际输出:

Hello %s

2 个答案:

答案 0 :(得分:1)

您可以这样格式化

String a = "Hello %s";
String b = "World";
String c = String.format(a, b);

答案 1 :(得分:1)

String#format不会评估已经解析的模式来检查是否还有任何令牌。它采用替代参数,并将其“按原样”插入格式指定的所需位置。因此,您所做的就是在输出中看到的内容-进行了第一次替换。由于没有其他格式的标记,因此b被忽略。

但是,格式本身可以是可变的,所以也许您想这样做:

String a = "Hello %s";
String b = "World";
String c = String.format(a, b);

这将给您Hello World中的c