標籤:
目錄
一、前言
二、重載方法
三、預留位置
四、對字元、字串進行格式化
五、對整數進行格式化
六、對浮點數進行格式化
七、對日期時間進行格式化
八、其他轉換符
九、總結
參考
一、前言
String.format 作為文本處理工具,為我們提供強大而豐富的字串格式化功能,為了不止步於簡單調用 String.format("Hello %s","John");
,下面將筆記整理並記錄下來。
二、重載方法
// 使用當前本地地區對象(Locale.getDefault())格式化字串String String.format(String fmt, Object... args);// 自訂本地地區對象格式化字串String String.format(Locale locale, String fmt, Object... args);
三、預留位置
預留位置完整格式為: %[index$][標識]*[最小寬度][.精度]轉換符 。
針對不同資料類型的格式化,預留位置的格式將有所裁剪。
% ,預留位置的其實字元,若要在預留位置內部使用%,則需要寫成 %% 。
[index$] ,位置索引從1開始計算,用於指定對索引相應的實參進行格式化並替換掉該預留位置。
[標識] ,用於增強格式化能力,可同時使用多個 [標識] ,但某些標識是不能同時使用的。
[最小寬度] ,用於設定格式化後的字串最小長度,若使用 [最小寬度] 而無設定 [標識] ,那麼當字串長度小於最小寬度時,則以左邊補空格的方式湊夠最小寬度。
[.精度] ,對於浮點數類型格式化使用,設定保留小數點後多少位。
轉換符 ,用於指定格式化的樣式,和限制對應入參的資料類型。
四、對字元、字串進行格式化
預留位置格式為: %[index$][標識][最小寬度]轉換符
樣本——將"hello"格式化為" hello"
String raw = "hello";String str = String.format("%1$7s", raw);// 簡化//String str = String.format("%7s", raw);
樣本——將"hello"格式化為"hello "
String raw = "hello";String str = String.format("%1$-7s", raw);// 簡化//String str = String.format("%-7s", raw);
可用標識:
-,在最小寬度內靠左對齊,右邊用空格補上。
可用轉換符:
s,字串類型。
c,字元類型,實參必須為char或int、short等可轉換為char類型的資料類型,否則拋IllegalFormatConversionException異常。
b,布爾類型,只要實參為非false的布爾類型,均格式化為字串true,否則為字串false。
n,平台獨立的分行符號(與通過 System.getProperty("line.separator") 是一樣的)
五、對整數進行格式化
預留位置格式為: %[index$][標識]*[最小寬度]轉換符
樣本——將1顯示為0001
int num = 1;String str = String.format("%04d", num)
樣本——將-1000顯示為(1,000)
int num = -1000;String str = String.format("%(,d", num)
可用標識:
-,在最小寬度內靠左對齊,不可以與0標識一起使用。0,若內容長度不足最小寬度,則在左邊用0來填充。#,對8進位和16進位,8進位前添加一個0,16進位前添加0x。+,結果總包含一個+或-號。空格,正數前加空格,負數前加-號。,,只用與十進位,每3位元字間用,分隔。(,若結果為負數,則用括弧括住,且不顯示符號。
可用轉換符:
b,布爾類型,只要實參為非false的布爾類型,均格式化為字串true,否則為字串false。d,整數類型(十進位)。x,整數類型(十六進位)。o,整數類型(八進位)n,平台獨立的分行符號, 也可通過System.getProperty("line.separator")擷取
六、對浮點數進行格式化
預留位置格式為: %[index$][標識]*[最小寬度][.精度]轉換符
樣本:
double num = 123.4567899;System.out.print(String.format("%f %n", num)); // 123.456790 System.out.print(String.format("%a %n", num)); // 0x1.edd3c0bb46929p6 System.out.print(String.format("%g %n", num)); // 123.457
可用標識:
-,在最小寬度內靠左對齊,不可以與0標識一起使用。0,若內容長度不足最小寬度,則在左邊用0來填充。#,對8進位和16進位,8進位前添加一個0,16進位前添加0x。+,結果總包含一個+或-號。空格,正數前加空格,負數前加-號。,,只用與十進位,每3位元字間用,分隔。(,若結果為負數,則用括弧括住,且不顯示符號。
可用轉換符:
b,布爾類型,只要實參為非false的布爾類型,均格式化為字串true,否則為字串false。n,平台獨立的分行符號, 也可通過System.getProperty("line.separator")擷取。f,浮點數型(十進位)。顯示9位有效數字,且會進行四捨五入。如99.99。a,浮點數型(十六進位)。e,指數類型。如9.38e+5。g,浮點數型(比%f,%a長度短些,顯示6位有效數字,且會進行四捨五入)
七、對日期時間進行格式化
預留位置格式為: %[index$]t轉換符
樣本:
Date now = new Date();String str = String.format("%tF", now); // 2014-10-12
可用轉換符
1. 日期的轉換符
c,星期六 十月 27 14:21:20 CST 2007F,2007-10-27D,10/27/07r,02:25:51 下午T,14:28:16R,14:28b, 月份簡稱B, 月份全稱a, 星期簡稱A, 星期全稱C, 年前兩位(不足兩位補零)y, 年後兩位(不足兩位補零)j, 當年的第幾天m, 月份(不足兩位補零)d, 日期(不足兩位補零)e, 日期(不足兩位不補零)
2. 時間的轉換符
H, 24小時制的小時(不足兩位補零)k, 24小時制的小時(不足兩位不補零)I, 12小時制的小時(不足兩位補零)i, 12小時制的小時(不足兩位不補零)M, 分鐘(不足兩位補零)S, 秒(不足兩位補零)L, 毫秒(不足三位補零)N, 毫秒(不足9位補零)p, 小寫字母的上午或下午標記,如中文為“下午”,英文為pmz, 相對於GMT的時區位移量,如+0800Z, 時區縮寫,如CSTs, 自1970-1-1 00:00:00起經過的秒數Q, 自1970-1-1 00:00:00起經過的豪秒
八、其他轉換符
<,用于格式化前一個轉換符所描述的參數。
樣本:
int num = 1000;String str = String.format("%d %<,d", num);// 結果"1000 1,000
九、總結
暫時寫到這裡吧,以後用到其他的再補充上去!
尊重原創,轉載請註明來自:http://www.cnblogs.com/fsjohnhuang/p/4094777.html ^_^肥仔John
參考
http://blog.csdn.net/lonely_fireworks/article/details/7962171
http://www.cnblogs.com/xytop/articles/1277125.html
Java魔法堂:String.format詳解