我是 Java 新手,来自 Python。在 Python 中,我们像这样进行字符串格式化:
>>> x = 4
>>> y = 5
>>> print("{0} + {1} = {2}".format(x, y, x + y))
4 + 5 = 9
>>> print("{} {}".format(x,y))
4 5
如何在 Java 中复制相同的东西?
我是 Java 新手,来自 Python。在 Python 中,我们像这样进行字符串格式化:
>>> x = 4
>>> y = 5
>>> print("{0} + {1} = {2}".format(x, y, x + y))
4 + 5 = 9
>>> print("{} {}".format(x,y))
4 5
如何在 Java 中复制相同的东西?
这MessageFormat
门课看起来像你所追求的。
System.out.println(MessageFormat.format("{0} + {1} = {2}", x, y, x + y));
Java 有一个与此类似的String.format方法。 这是一个如何使用它的示例。 这是解释所有这些选项的文档参考。%
这是一个内联示例:
package com.sandbox;
public class Sandbox {
public static void main(String[] args) {
System.out.println(String.format("It is %d oclock", 5));
}
}
这将打印“现在是 5 点”。
Slf4j 有MessageFormatter.format()接受{}
没有参数编号,就像 Python 一样。Slf4j 是一个流行的日志记录框架,但您不必使用它进行日志记录即可使用 MessageFormatter。
您可以这样做(使用String.format):
int x = 4;
int y = 5;
String res = String.format("%d + %d = %d", x, y, x+y);
System.out.println(res); // prints "4 + 5 = 9"
res = String.format("%d %d", x, y);
System.out.println(res); // prints "4 5"
如果你想使用空的占位符(没有位置),你可以在 周围写一个小工具Message.format()
,像这样
void print(String s, Object... var2) {
int i = 0;
while(s.contains("{}")) {
s = s.replaceFirst(Pattern.quote("{}"), "{"+ i++ +"}");
}
System.out.println(MessageFormat.format(s, var2));
}
然后,可以像这样使用它,
print("{} + {} = {}", 4, 5, 4 + 5);
如果您使用 Log4j 2( log4j-api
),那么您可以使用ParameterizedMessage
.
ParameterizedMessage.format("{} {}", new Object[] {x, y});
或者
new ParameterizedMessage("{} {}", x, y).getFormattedMessage(); // there is trimming