Java format()方法:格式化字串

2020-07-16 10:04:52
Java String 類的format()方法使用指定的格式字串和引數返回一個格式化字串。

語法1

format(String format,Object……args)

引數說明:
  • format:格式字串。
  • args:格式字串中由格式說明符參照的引數。引數數目是可變的,可以為 0。

常規型別的格式化可應用於任何引數型別,可通過表1所示的轉換符來實現。

表1 常規轉換符
轉換符 說  明 示  例
%b、%B 格式化為布林型別 false
%h、%H 格式化為雜湊碼 A05A5198
%s、%S 格式化為字串型別 "abc"
%c、%C 格式化為字元型別 'w'
%d 格式化為十進位制數 26
%0 格式化為八進位制整數 12
%x、%X 格式化為十六進位制整數 4b 1
%e 格式化為用電腦科學計數法表示的十進位制數 1.700000e+01
%a 格式化為帶有效位數和指數的十六進位制浮點值 0X1.C000000000001P4
%n 結果為特定於平台的行分隔符  
%% 結果為字面值%, %

範例

使用 String 類的 format 方法實現將“400/2”返回結果型別轉換為字串,並將“3>5”返回結果格式化為布林型別。
String str = String.format("%d",400/2);
String str2 = String.format("%b",3>5);
將字串 str 與 str2 在控制台上輸出,輸出結果如下:
200
false

語法2

通過將給定的特殊轉換符作為引數來實現對日期和時間字串的格式化。

format(Locale l,String format,Object……args)

引數說明:
  • l:格式化過程中要應用的語言環境。如果 l 為 null,則不進行在地化。
  • format:格式字串。
  • args:格式字串中由格式說明符參照的引數。如果還有格式說明符以外的引數,則忽略這些額外的引數。引數的數目是可變的,可以為 0。引數的最大數目受 Java Virtual Machine Specification 所定義的 Java 陣列最大維度的限制。有關 null 引數的行為依賴於轉換。

format() 方法常用的日期和時間的格式轉換符如表2所示。

表2 常見的日期和時間轉換符
轉換符 說 明 示 例
%te 一個月中的某一天(1?31) 12
%tb 指定語言環境的月份簡稱 Jan (英文)、一月(中文)
%tB 指定語言環境的月份全稱 February (英文)、二月(中文)
%tA 指定語言環境的星期幾全稱 Monday (英文)、星期一(中文)
%ta 指定語言環境的星期幾簡稱 Mon (英文)、星期一(中文)
%tc 包括全部日期和時間資訊 星期三 十月 25 13:37:22 CST 2008
%tY 4位元年份 2008
%tj 一年中的第幾天(001?366) 060
%tm 月份 05
%td 一個月中的第幾天(01?31) 07
%ty 兩位年份 08

典型應用

String 類的 format 方法可以格式化日期和時間,本範例實現將當前日期以 4 位年份、月份全稱、兩位日期形式輸出。

本範例的關鍵程式碼如下:
public static void main(String[] args){
    Date date=new Date();//定義Date類物件
    Locale form=Locale.US;
    String year=String.format(form,"%tY",date);//將當前年份進行格式化
    String month=String.format(form,"%tB",date);//將當前月份進行格式化
    String day=String.format(form,"%td",date);//將當前日期進行格式化
    System.out.println("今年是:"+year+"年");//將格式化後的日期輸出
    System.out.println("現在是:"+month);
    System.out.println("今天是:"+day+"號");
}

執行結果如下:

今年是:2011年
現在是:March
今天是:   22號