Java:使用占位符的字符串格式

时间:2013-07-08 22:45:36

标签: java python string format placeholder

我是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中复制相同的东西?

5 个答案:

答案 0 :(得分:50)

MessageFormat课程看起来就像你所追求的那样。

System.out.println(MessageFormat.format("{0} + {1} = {2}", x, y, x + y));

答案 1 :(得分:10)

Java有String.format方法与此类似。 Here's an example of how to use it.这是documentation reference,它解释了所有这些%选项的含义。

这是一个内联示例:

package com.sandbox;

public class Sandbox {

    public static void main(String[] args) {
        System.out.println(String.format("It is %d oclock", 5));
    }        
}

打印“它是5点钟”。

答案 2 :(得分:2)

您可以执行此操作(使用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"

答案 3 :(得分:1)

Slf4j具有MessageFormatter.format(),该Deployment JBOSS EAP接受{},而没有参数编号,就像Python。 Slf4j是一个流行的日志记录框架,但是您不必使用它进行日志记录就可以使用MessageFormatter。

答案 4 :(得分:1)

如果要使用空的占位符(无位置),可以在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);