常規(guī)類型的格式化
String類的format()方法用于創(chuàng)建格式化的字符串以及連接多個(gè)字符串對(duì)象。熟悉C語(yǔ)言的讀者應(yīng)該記得C語(yǔ)言的sprintf()方法,兩者有類似之處。format()方法有兩種重載形式。
1 format(String format, Object... args)
該方法使用指定的字符串格式和參數(shù)生成格式化的新字符串。 新字符串始終使用本地語(yǔ)言環(huán)境。例如當(dāng)前日期信息在中國(guó)語(yǔ)言環(huán)境中的表現(xiàn)形式為“2007-10-27”,但是在其他國(guó)家有不同的表現(xiàn)形式。
語(yǔ)法:
String.format(format,args...)
format:字符串格式。
args...:字符串格式中由格式說明符引用的參數(shù)。如果還有格式說明符以外的參數(shù),則忽略這些額外的參數(shù)。參數(shù)的數(shù)目是可變的,可以為0。
2 format(Locale locale, String format, Object... args)
該方法使用指定的語(yǔ)言環(huán)境、字符串格式和參數(shù)生成一個(gè)格式化的新字符串。新字符串始終使用指定的語(yǔ)言環(huán)境。
語(yǔ)法:
String.format(locale,format,args...)
locale:指定的語(yǔ)言環(huán)境。
format:字符串格式。
args...:字符串格式中由格式說明符引用的參數(shù)。如果還有格式說明符以外的參數(shù),則忽略這些額外的參數(shù)。參數(shù)的數(shù)目是可變的,可以為0。
format()方法中的字符串格式參數(shù)有很多種轉(zhuǎn)換符選項(xiàng),例如:日期、整數(shù)、浮點(diǎn)數(shù)等。這些轉(zhuǎn)換符的說明如表7.1所示。
// Hi, jhon
System.out.println(String.format("Hi, %s", "jhon"));
// A, true, 9
System.out.println(String.format("%c, %b, %d,%2f",'A',true,9,3.00));
這些字符串格式參數(shù)不但可以靈活將其他數(shù)據(jù)類型轉(zhuǎn)換成字符串,而且可以與各種標(biāo)志組合在一起,生成各種格式的字符串,這些標(biāo)志如表7.2所示。
//左對(duì)齊 123
System.out.println(String.format("左對(duì)齊 %-10d",123));
//數(shù)字前加空格: 123
System.out.println(String.format("數(shù)字前加空格: % 10d",123));
//數(shù)字前補(bǔ)零 0000000123
System.out.println(String.format("數(shù)字前補(bǔ)零 %010d",123));
// $ 格式化參數(shù)索引 1$表示第一個(gè)參數(shù)
//$標(biāo)志: 111 , 222
System.out.println(String.format("$標(biāo)志: %1$d , %2$d",111,222));
日期和時(shí)間字符串格式化
在程序界面中經(jīng)常需要顯示時(shí)間和日期,但是其顯示的 格式經(jīng)常不盡人意,需要編寫大量的代碼經(jīng)過各種算法才得到理想的日期與時(shí)間格式。字符串格式中還有%tx轉(zhuǎn)換符沒有詳細(xì)介紹,它是專門用來格式化日期和時(shí) 間的。%tx轉(zhuǎn)換符中的x代表另外的處理日期和時(shí)間格式的轉(zhuǎn)換符,它們的組合能夠?qū)⑷掌诤蜁r(shí)間格式化成多種格式。
1.常見日期時(shí)間格式化
格式化日期與時(shí)間的轉(zhuǎn)換符定義了各種格式化日期字符串的方式,其中最常用的日期和時(shí)間的組合格式如表7.3所示。
Date date = new Date();
//完整日期和時(shí)間:星期三 三月 07 14:10:34 GMT+08:00 2018
System.out.println(String.format("完整日期和時(shí)間:%tc",date));
//年-月-日格式:2018-03-07
System.out.println(String.format("年-月-日格式:%tF",date));
//月/日/年格式:03/07/18
System.out.println(String.format("月/日/年格式:%tD",date));
//HH:MM:SS PM格式:02:13:55 下午
System.out.println(String.format("HH:MM:SS PM格式:%tr",date));
//HH:MM:SS格式:14:13:55
System.out.println(String.format("HH:MM:SS格式:%tT",date));
//HH:MM格式:14:13
System.out.println(String.format("HH:MM格式:%tR",date));
2.格式化日期字符串
定義日期格式的轉(zhuǎn)換符可以使日期通過指定的轉(zhuǎn)換符生成新字符串。這些日期轉(zhuǎn)換符如表7.4所示。
3.格式化時(shí)間字符串
和日期格式轉(zhuǎn)換符相比,時(shí)間格式的轉(zhuǎn)換符要更多、更精確。它可以將時(shí)間格式化成時(shí)、分、秒甚至?xí)r毫秒等單位。格式化時(shí)間字符串的轉(zhuǎn)換符如表7.5所示。