java中的String.format使用


     format(String  format, Objece...  argues)函數相當於C語言中的printf函數,但是相對來說更靈活.
     和C中的printf函數差不多,在format的時候能夠產生單純的替換效果.用具體的值替換相應的轉換符.轉換符有如下一些:
     
在format第一個參數中傳入相應的轉換符就能代表特定的信息,在第二個參數中傳入具體的值完成相應的替換,相當於可以有 一定的模版方式,然后在實際填充的時候用具體的值去填充即可。

    String str=null;

    str=String.format("Hi,%s", "飛龍");          // 格式化字符串

    System.out.println(str);                             // 輸出字符串變量str的內容

    System.out.printf("字母a的大寫是:%c %n", 'A');

    System.out.printf("3>7的結果是:%b %n", 3>7);

    System.out.printf("100的一半是:%d %n", 100/2);

    System.out.printf("100的16進制數是:%x %n", 100);

    System.out.printf("100的8進制數是:%o %n", 100);

    System.out.printf("50元的書打8.5折扣是:%f 元%n", 50*0.85);

    System.out.printf("上面價格的16進制數是:%a %n", 50*0.85);

    System.out.printf("上面價格的指數表示:%e %n", 50*0.85);

    System.out.printf("上面價格的指數和浮點數結果的長度較短的是:%g %n", 50*0.85);

    System.out.printf("上面的折扣是%d%% %n", 85);

    System.out.printf("字母A的散列碼是:%h %n", 'A');

 
     format參數中可以包含不需要轉化的字符串,這些字符串是你寫什么,最終就輸出什么。同時還包含一些特殊格式的內容,來指定將哪個對象來轉換,以及轉換成什么形式。這種特殊的格式通通以%index$開頭,index從1開始取值,表示將第index個參數拿進來進行格式化。這一點比c語言要強一點, c語言只能按照參數的順序依次格式化,而java可以選擇第n個參數來格式化。由於該函數可以對任意一個對象進行格式化,不同的對象適用的參數也不同,所以要區分對待.
  1.對整數進行格式化
         形式:%[index$][標識][最小寬度]轉換方式
格式化字符串由四個部分組成.
     %[index$]---對index個參數進行格式化
     [標識]---相應的格式化時候的配置信息,比如當小於最小寬度時候如何處理,標識包括:
          '-'    在最小寬度內左對齊(默認是右對齊),不可以與“用0填充”同時使用 
          '#'    只適用於8進制和16進制,8進制時在結果前面增加一個0,16進制時在結果前面增加0x 
          '+'    結果總是包括一個符號(一般情況下只適用於10進制,若對象為BigInteger才可以用於8進制和16進制) 
          '  '    正值前加空格,負值前加負號(一般情況下只適用於10進制,若對象為BigInteger才可以用於8進制和16進制) 
          '0'    結果將用零來填充 
          ','    只適用於10進制,每3位數字之間用“,”分隔 
          '('    若參數是負數,則結果中不添加負號而是用圓括號數字括起來(同‘+’具有同樣的限制) 
     [轉換方式]實際代表的是所傳入的這個數字采用的是什么進制的表示.轉換方式包含如下幾類:
          d-十進制      o-八進制         x或X-十六進制   
 

 日期和時間字符串格式化

在程序界面中經常需要顯示時間和日期,但是其顯示的 格式經常不盡人意,需要編寫大量的代碼經過各種算法才得到理想的日期與時間格式。字符串格式中還有%tx轉換符沒有詳細介紹,它是專門用來格式化日期和時間的。%tx轉換符中的x代表另外的處理日期和時間格式的轉換符,它們的組合能夠將日期和時間格式化成多種格式。

1.常見日期時間格式化

 
格式化日期與時間的轉換符定義了各種格式化日期字符串的方式,其中最常用的日期和時間的組合格式如下:
使用的時候用"%t[c/F/D/r/T/R]"這樣的形式即可.
---------------------------------------------------------------------------------------------------------------------------

Date date=new Date();                                                                    // 創建日期對象

    System.out.printf("全部日期和時間信息:%tc%n",date);                // 格式化輸出日期或時間

    System.out.printf("年-月-日格式:%tF%n",date);

    System.out.printf("月/日/年格式:%tD%n",date);

    System.out.printf("HH:MM:SS PM格式(12時制):%tr%n",date);

    System.out.printf("HH:MM:SS格式(24時制):%tT%n",date);

    System.out.printf("HH:MM格式(24時制):%tR",date);

---------------------------------------------------------------------------------------------------------------------------
在處理日期的時候還會遇到的是獲得當前是第幾月,是今年的第幾天這樣的問題,這樣的問題也可以在String.format這個函數中得到。
 
Date date = new Date();
System.out.println("%tb",date)//這是得到操作系統語言的月份,中文下當然就是中文
System.out.println(Locale.US,"%tb",date)//這是得到英文的月份的簡稱

格式化時間字符串

和日期格式轉換符相比,時間格式的轉換符要更多、更精確。它可以將時間格式化成時、分、秒甚至時毫秒等單位。格式化時間字符串的轉換符如下表:

 
 
-------------------------------------------------------------------------------------------------------------------------------

    Date date=new Date();                               // 創建日期對象

    System.out.printf("2位數字24時制的小時(不足2位前面補0):%tH%n",date);

    System.out.printf("2位數字12時制的小時(不足2位前面補0):%tI%n",date);

    System.out.printf("2位數字24時制的小時(前面不補0):%tk%n",date);

    System.out.printf("2位數字12時制的小時(前面不補0):%tl%n",date);

    System.out.printf("2位數字的分鍾(不足2位前面補0):%tM%n",date);

    System.out.printf("2位數字的秒(不足2位前面補0):%tS%n",date);

    System.out.printf("3位數字的毫秒(不足3位前面補0):%tL%n",date);

    System.out.printf("9位數字的毫秒數(不足9位前面補0):%tN%n",date);

    String str=String.format(Locale.US,"小寫字母的上午或下午標記(英):%tp",date);

    System.out.println(str);                          // 輸出字符串變量str的內容

    System.out.printf ("小寫字母的上午或下午標記(中):%tp%n",date);

    System.out.printf("相對於GMT的RFC822時區的偏移量:%tz%n",date);

    System.out.printf("時區縮寫字符串:%tZ%n",date);

    System.out.printf("1970-1-1 00:00:00 到現在所經過的秒數:%ts%n",date);

    System.out.printf("1970-1-1 00:00:00 到現在所經過的毫秒數:%tQ%n",date);

-------------------------------------------------------------------------------------------------------------------------------
參考整理來自:
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM