aus*_*ser 28 java string formatting
我相信我以前见过这样的String.format用过:
String.format("Some {1}, {2}, {3}", var1, var2, var3);
这对任何人都响铃吗?也许我在想C#,有没有办法在java中实现相同的目标?
我知道你可以这样做:
String.format("Some %s, %d, %s", aString, aNumber, aString)
但我追求的语法是前者...
Tob*_*sse 37
您正在寻找的是MessageFormat,它使用给定的格式和输入参数,例如
MessageFormat.format("Some {0}, {1}, {2}", var1, var2, var3);
正如已经提到的,String.format仍然可以使用备用语法来完成工作,但它在功能上的功能不强,而不是您请求的功能.
Joã*_*lva 12
是的,这是C#的典型格式字符串.在Java中,您可以使用后者,即.String.format("%s %d %d", ...)
另一种方法是使用MessageFormat.format("Some {0}, {1}, {2}", var1, var2, var3),使用.NET大括号表示法,如@Tobias所述,但它要求您导入java.text.MessageFormat.它们也更适合于处理本地化资源时,您通常在外部.properties文件中包含格式化的消息Error {0} ocurred due to {1}.
Jar*_*boš 10
我不喜欢指定参数索引或其类型 - 主要是在抛出异常并为其准备消息时.我喜欢SLF4j这样做的方式.所以我像这样包装了org.slf4j.helpers.MessageFormatter:
public static String subst(String string, Object...objects) {
    return MessageFormatter.arrayFormat(string, objects).getMessage();
}
然后你可以像这样使用它:
public void main(String[] args) {
    throw new RuntimeException(MyUtils.subst("Problem with A={} and B={}!", a, b));
}
| 归档时间: | 
 | 
| 查看次数: | 18896 次 | 
| 最近记录: |