有時候使用String.format格式化數(shù)據(jù)希望得到如下結(jié)果:
String str = String.format("下載完成%s%", "50.25");
System.out.printf(str);
這樣干的結(jié)果竟然是報錯啦
Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = '%'
at java.util.Formatter.checkText(Formatter.java:2547)
at java.util.Formatter.parse(Formatter.java:2533)
at java.util.Formatter.format(Formatter.java:2469)
其實原因很簡單,%在此處是特殊字符叁熔,需要轉(zhuǎn)義的委乌,改成如下寫法就OK了。
String str = String.format("下載完成%s%%", "50.25");
System.out.printf(str);
當然這只是其中一種解決辦法而已荣回,我們還可以通過其他技巧來處理遭贸。比如
String str = String.format("下載完成%1$s%2$s", "50.35", "%");
System.out.println(str);
順便整理一下轉(zhuǎn)換符實現(xiàn)不同數(shù)據(jù)類型到字符串,方便查閱
轉(zhuǎn)換符 | 說明 | 示例 |
---|---|---|
%s | 字符串類型 | github |
%c | 字符類型 | c |
%b | 布爾類型 | true |
%d | 整數(shù)類型(十進制) | 1024 |
%x | 整數(shù)類型(十六進制) | FF |
%o | 整數(shù)類型(八進制) | 77 |
%f | 浮點類型 | 99.66 |
%a | 十六進制浮點類型 | FF.35AE |
%e | 指數(shù)類型 | 9.38e+5 |
%g | 通用浮點類型(f和e類型中較短的) | --- |
%h | 散列碼 | --- |
%% | 百分比類型 | --- |
%n | 換行符 | --- |
%tx | 日期與時間類型(x代表不同的日期與時間轉(zhuǎn)換符) | --- |