Java魔法堂:String.format詳解

來源:互聯網
上載者:User

標籤:

  目錄                              

    一、前言

    二、重載方法

    三、預留位置

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

    五、對整數進行格式化

    六、對浮點數進行格式化

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

    八、其他轉換符

    九、總結

    參考

 

一、前言                            

   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詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.