我敢肯定,我已經看到了String.format
像這樣使用前:正確的格式字符串的String.format或類似
String.format("Some {1}, {2}, {3}", var1, var2, var3);
這是否響任何人任何鐘聲?也許我在想C#,有沒有在java中實現相同的方法?
我知道你可以這樣做:
String.format("Some %s, %d, %s", aString, aNumber, aString)
但我以後語法是前者...
我敢肯定,我已經看到了String.format
像這樣使用前:正確的格式字符串的String.format或類似
String.format("Some {1}, {2}, {3}", var1, var2, var3);
這是否響任何人任何鐘聲?也許我在想C#,有沒有在java中實現相同的方法?
我知道你可以這樣做:
String.format("Some %s, %d, %s", aString, aNumber, aString)
但我以後語法是前者...
你在找什麼是MessageFormat
,它使用給定的格式和輸入參數,例如
MessageFormat.format("Some {0}, {1}, {2}", var1, var2, var3);
而且如前所述,String.format
仍然可以使用替代語法的工作,但它在功能不太強大,而不是你的要求是什麼。
做了一些研究:的String.format其實比MessageFormat中新。他們使用不同的方法,但在整體功能上差別不大。據說String.format更快。 –
不錯。在Android中也存在。一種非常簡單的格式化方法。不需要提供輸入類型是一個優點。 –
是的,這就是C#典型format字符串。在Java中,你可以使用後者,也就是String.format("%s %d %d", ...)
。
的替代是使用MessageFormat.format("Some {0}, {1}, {2}", var1, var2, var3)
,它使用.NET花括號符號,如@Tobias提到,儘管它需要你導入java.text.MessageFormat
。他們也更適合當你正在處理的本地化資源,在這裏你通常的格式Error {0} ocurred due to {1}
外部.properties
文件與消息。
我不喜歡指定參數,或者其類型的兩個指標 - 拋出異常,併爲它準備的消息主要是當。我喜歡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));
}
能否請您詳細說明您的qustion一點? –