Java中如何格式化字符串

288

这是一个基础问题,但我应该如何使用Java格式化字符串,例如:

"第{1}步,共{2}步"

在C#中很容易实现。


3
请参见此问题 - The Scrum Meister
http://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html#syntax - ℛɑƒæĿᴿᴹᴿ
12个回答

1
我编写了这个函数,它可以做到恰到好处的事情。使用与同名变量相同的值来插值以 $ 开头的单词。
private static String interpol1(String x){
    Field[] ffield =  Main.class.getDeclaredFields();
    String[] test = x.split(" ") ;
    for (String v : test ) {
        for ( Field n: ffield ) {
            if(v.startsWith("$") && ( n.getName().equals(v.substring(1))  )){
                try {
                    x = x.replace("$" + v.substring(1), String.valueOf( n.get(null)));
                }catch (Exception e){
                    System.out.println("");
                }
            }
        }
    }
    return x;
}

0

Apache Commons Text库中的org.apache.commons.text.StringSubstitutor辅助类提供了命名变量替换功能。

Map<String, String> valuesMap = new HashMap<>();
valuesMap.put("animal", "quick brown fox");
valuesMap.put("target", "lazy dog");
String resolved = new StringSubstitutor(valuesMap).replace("The ${animal} jumped over the ${target}.");
System.out.println(resolved); // The quick brown fox jumped over the lazy dog.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接