为什么这在Java中不起作用而在C#中起作用?
String a = "Hello %s";
String b = "World";
String c = String.format("%s", a, b);
println c
预期输出:
Hello World
实际输出:
Hello %s
答案 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