String.format詳解

轉載自:(http://www.cnblogs.com/fsjohnhuang/p/4094777.html)

Java魔法堂:String.format詳解

  目錄                              

    一、前言

    二、重載方法

    三、佔位符

    四、對字符、字符串進行格式化

    五、對整數進行格式化

    六、對浮點數進行格式化

    七、對日期時間進行格式化

    八、其他轉換符

    九、總結

    參考

 

一、前言                            

   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 2007
F,2007-10-27
D,10/27/07
r,02:25:51 下午
T,14:28:16
R,14:28
b, 月份簡稱
B, 月份全稱
a, 星期簡稱
A, 星期全稱
C, 年前兩位(不足兩位補零)
y, 年後兩位(不足兩位補零)
j, 當年的第幾天
m, 月份(不足兩位補零)
d, 日期(不足兩位補零)
e, 日期(不足兩位不補零)

  2. 時間的轉換符

H, 24小時制的小時(不足兩位補零)
k, 24小時制的小時(不足兩位不補零)
I, 12小時制的小時(不足兩位補零)
i, 12小時制的小時(不足兩位不補零)
M, 分鐘(不足兩位補零)
S, 秒(不足兩位補零)
L, 毫秒(不足三位補零)
N, 毫秒(不足9位補零)
p, 小寫字母的上午或下午標記,如中文爲“下午”,英文爲pm
z, 相對於GMT的時區偏移量,如+0800
Z, 時區縮寫,如CST
s, 自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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章