常規類型的格式化
String 類的 format() 方法用於創建格式化的字符串以及連接多個字符串對像。熟悉
C 語言的讀者應該記得 C 語言的 sprintf() 方法,兩者有類似之處。format()
方法有兩種多型。
- format(String format, Object... args)
該方法使用指定的字串格式和參數生成格式化的新字串。
新字串始終使用本地語言環境。
- format:字串格式。
- args:字串格式中由格式說明符引用的參數。如果還有格式說明符以外的參數,則忽略這些額外的參數。參數的數目是可變的,可以為 0。
- format(Locale locale, String format, Object... args)
該方法使用指定的語言環境、字符串格式和參數生成一個格式化的新字符串。新字符串始終使用指定的語言環境。
- locale:指定的語言環境。
- format:字符串格式。
- args...:字符串格式中由格式說明符引用的參數。如果還有格式說明符以外的參數,則忽略這些額外的參數。參數的數目是可變的,可以為 0。
format()
方法中的字串格式參數有很多種轉換符選項,例如:日期、整數、浮點數等:
| 轉換符 | 說明 | 示例 |
|---|---|---|
| %s | 字串類型 | "local string" |
| %c | 字元類型 | 'x' |
| %b | 布林值類型 | true |
| %d | 整數類型(十進制) | 99 |
| %x | 整數類型(十六進制) | FF |
| %o | 整數類型(八進制) | 77 |
| %f | 浮點類型 | 99.99 |
| %a | 十六進制浮點類型 | FF.35AE |
| %e | 指數類型 | 9.38e+5 |
| %g | 通用浮點類型(f和e類型中較短的) | |
| %h | 散列碼 | |
| %% | 百分比類型 | % |
| %n | 換行符 | "/n" |
| %tc | 包括全部日期和時間信息 | 星期四 四月 06 15:19:46 TST 2023 |
| %tf | “年-月-日” | 2023-04-06 |
| %td | “月/日/年”格式 | 04/06/23 |
| %tr | “HH:MM:SS PM”格式(12時制) | 03:19:46 下午 |
| %tT | “HH:MM:SS”格式(24時制) | 15:19:46 |
| %tR | “HH:MM”格式(24時制) | 15:19 |
範例Code:
public static void main(String[] args) {
String str=null;
// 格式參數$的使用:99,abc
str=String.format("格式參數$的使用:%1$d,%2$s%n", 99,"abc");
// 輸出字串 println最後會自帶 %n
System.out.println(str);
//顯示正負數的符號:+99與-99
System.out.printf("顯示正負數的符號:%+d與%d%n%n", 99,-99);
//前補0補滿3位:007
System.out.printf("前補0補滿3位:%03d%n%n", 7);
//前補空白補到8位: 7
System.out.printf("前補空白補到8位:% 8d%n%n", 7);
//整數分組的效果是:111,222,333
System.out.printf("整數分組的效果是:%,d%n%n", 111222333);
//小數表示:49.80
System.out.printf("小數表示:%2.2f%n%n", 49.8);
// 創建日期對像
Date date=new Date();
// 全部日期和時間信息:星期四 四月 06 15:19:46 TST 2023
System.out.printf("全部日期和時間信息:%tc%n%n",date);
//年-月-日格式:2023-04-06
System.out.printf("年-月-日格式:%tF%n%n",date);
//月/日/年格式:04/06/23
System.out.printf("月/日/年格式:%tD%n%n",date);
//HH:MM:SS PM格式(12時制):03:19:46 下午
System.out.printf("HH:MM:SS PM格式(12時制):%tr%n%n",date);
//HH:MM:SS格式(24時制):15:19:46
System.out.printf("HH:MM:SS格式(24時制):%tT%n%n",date);
//HH:MM格式(24時制):15:19
System.out.printf("HH:MM格式(24時制):%tR%n%n",date);
//年-月-日 HH:MM:SS格式:2023-04-06 15:19:46
System.out.printf("年-月-日 HH:MM:SS格式:%1$tF %1$tT%n%n",date);
// 英文月份簡稱:Apr
System.out.println(String.format(Locale.US,"英文月份簡稱:%tb%n",date));
//本地月份全稱:四月
System.out.printf("本地月份簡稱:%tb%n%n",date);
//英文月份全稱:April
System.out.println(String.format(Locale.US,"英文月份全稱:%tB%n",date));
//本地月份全稱:四月
System.out.printf("本地月份全稱:%tB%n%n",date);
//英文星期的簡稱:Thu
System.out.printf(String.format(Locale.US,"英文星期的簡稱:%ta%n",date));
//本地星期的簡稱:星期四
System.out.printf("本地星期的簡稱:%tA%n%n",date);
//年的前兩位數字(前補0至2位):20
System.out.printf("年的前兩位數字(前補0至2位):%tC%n%n",date);
//年的後兩位數字(前補0至2位):23
System.out.printf("年的後兩位數字(前補0至2位):%ty%n%n",date);
//一年中的天數(即年的第幾天):096
System.out.printf("一年中的天數(即年的第幾天):%tj%n%n",date);
//兩位數字的月份(前補0至2位):04
System.out.printf("兩位數字的月份(前補0至2位):%tm%n%n",date);
//兩位數字的日(前補0至2位):06
System.out.printf("兩位數字的日(前補0至2位):%td%n%n",date);
//月份的日:6
System.out.printf("月份的日:%te%n%n",date);
//24時制的時間 (小時前補0至2位 9位豪秒):15:07:40.771000000
System.out.printf("24時制的時間(小時前補0至2位 9位豪秒):"+
"%1$tH:%1$tM:%1$tS.%1$tN%n%n",date);
//12時制的時間(小時前補0至2位 3位豪秒):03:07:40.771
System.out.printf("12時制的時間(小時前補0至2位 3位豪秒):"+
"%1$tI:%1$tM:%1$tS.%1$tL%n%n",date);
//小寫字母的上午或下午標記(英):pm
System.out.println(String.format(
Locale.US,"小寫字母的上午或下午標記(英):%tp%n",date
));
//小寫字母的上午或下午標記(中):下午
System.out.printf ("小寫字母的上午或下午標記(中):%tp%n%n",date);
//對於GMT的RFC822時區的偏移量:+0800
System.out.printf("相對於GMT的RFC822時區的偏移量:%tz%n%n",date);
//時區縮寫字符串:TST
System.out.printf("時區縮寫字符串:%tZ%n%n",date);
//1970-1-1 00:00:00 到現在所經過的秒數:1680765586
System.out.printf("1970-1-1 00:00:00 到現在所經過的秒數:%ts%n%n",date);
//1970-1-1 00:00:00 到現在所經過的毫秒數:1680765586727
System.out.printf("1970-1-1 00:00:00 到現在所經過的毫秒數:%tQ%n%n",date);
}
留言
張貼留言