String.format()應用

語法格式:String.format(%[argument_index$][flags][width][.precision]conversion)

  • argument_index,可選,是一個十進制整數,用於表明參數在參數列表中的位置;
  • flags,可選,修改輸出格式的字符集;
  • width,可選,是一個非負十進制整數,表明要向輸出中寫入的最少字符數;
  • precision,可選,是一個非負十進制整數,通常用來限制字符數;
  • conversion,必選,是一個表明應該如何格式化參數的字符,
import java.util.Date;

public class StringTest {
   /**
    * format格式說明符語法:%[argument_index$][flags][width][.precision]conversion
    * 參數舉例:
    * [argument_index$]:  "1$"     第1個參數
    * [flags]:  "0" , ""       填充字符,數字用"0"或"",字符串用""
    * [width]: "10","-10"     最後總寬度10,正數表示在前面添加,負數表示在後面添加。負數的情況一般只在字符串時才用
    * [.precision]  : ".3"     小數點後保留3位小數,必須是浮點數類型參數才行
    * conversion:  d 代表整數,f代表浮點數,s代表字符串,類型要匹配才行,否則報錯  還有t轉義的很多字符   
    */
    public static void main(String[] args) {

        //爲了能清楚地表示" ",把結果中的空格換成了"@"

        //整數   必須是整數才能轉換
        System.out.println(String.format("%010d",123)); //0000000123
        System.out.println(String.format("%2$08d", -3123,-5566));  //-0005566
        System.out.println(String.format("%1$9d", -31));   //@@@@@@-31
        System.out.println(String.format("%1$09d", -31));  //-00000031

        //數字分割
        System.out.println(String.format("%,d",Integer.MAX_VALUE));  //2,147,483,647
        System.out.println(String.format("%,f",Float.MAX_VALUE));  //340,282,346,638,528,860,000,000,000,000,000,000,000.000000

        //浮點數   必須是浮點數才能轉換
        System.out.println(String.format("%020.3f", 12.3));   //0000000000000012.300
        System.out.println(String.format("%1$.2f", 5689.0));   //5689.00

        //字符串  和  單字符c
        System.out.println(String.format("%-10s", "sss"));  //sss@@@@@@@     
        System.out.println(String.format("%10s", "sss"));   //@@@@@@@sss
        System.out.println(String.format("%5c", 'v'));   //@@@@v


        //綜合 日期處理
        String s3= String.format("你的生日:%1$tF,現在的時間:%2$tT", new Date(),System.currentTimeMillis());
        System.out.println(s3);  //你的生日:2015-01-30,現在的時間:22:58:24

        //格式化的位置  
        String str = "I love ni %s, you love me %s";   //當不標明參數時,將按順序替換
        String str2 = "I love ni %2$s, you love me %1$s";
        System.out.println(String.format(str, "renjunjie","songliyu")); //I love ni renjunjie, you love me songliyu
        System.out.println(String.format(str2, "renjunjie","songliyu"));   //I love ni songliyu, you love me renjunjie

        //數組的操作  
        Object[] sendData = new Object[4];
        sendData[0] = Integer.valueOf(1);
        sendData[1] = "172.12.1.2";
        sendData[2] = Integer.valueOf(123);
        sendData[3] = "testadfaerfa";
        String sendDataString = String.format("%d,%s,%d,%s",(Object[]) sendData);  //當不標明參數時,將按順序替換
        System.out.println(sendDataString);   //1,172.12.1.2,123,testadfaerfa
    }
}

格式化日期(後綴字符是爲 't' 和 'T' 轉換定義)

  String.format("%tY", new Date())    //2011
  String.format("%tm", new Date())   //03
  String.format("%tF", new Date())    //2011-03-04
  String.format("%tR", new Date())   //15:49
  String.format("%tT", new Date())   //15:49:34
  String.format("%tc", new Date())   //星期五 三月 04 15:49:34 CST 2011
  String.format("%tD", new Date())  //03/04/11
  String.format("%td", new Date())   //04

以下轉換字符用來格式化日期:

'B'     特定於語言環境的月份全稱,例如 "January" 和 "February"。
'b'     特定於語言環境的月份簡稱,例如 "Jan" 和 "Feb"。
'h'     與 'b' 相同。
'A'     特定於語言環境的星期幾全稱,例如 "Sunday" 和 "Monday"
'a'     特定於語言環境的星期幾簡稱,例如 "Sun" 和 "Mon"
'C'     除以 100 的四位數表示的年份,被格式化爲必要時帶前導零的兩位數,即 00 - 99
'Y'     年份,被格式化爲必要時帶前導零的四位數(至少),例如,0092 等於格里高利曆的 92 CE。
'y'     年份的最後兩位數,被格式化爲必要時帶前導零的兩位數,即 00 - 99。
'j'     一年中的天數,被格式化爲必要時帶前導零的三位數,例如,對於格里高利曆是 001 - 366。
'm'     月份,被格式化爲必要時帶前導零的兩位數,即 01 - 13。
'd'     一個月中的天數,被格式化爲必要時帶前導零兩位數,即 01 - 31
'e'     一個月中的天數,被格式化爲兩位數,即 1 - 31。

以下轉換字符用於格式化常見的日期/時間組合。

'R'     24 小時制的時間,被格式化爲 "%tH:%tM"
'T'     24 小時制的時間,被格式化爲 "%tH:%tM:%tS"。
'r'     12 小時制的時間,被格式化爲 "%tI:%tM:%tS %Tp"。上午或下午標記 ('%Tp') 的位置可能與語言環境有關。
'D'     日期,被格式化爲 "%tm/%td/%ty"。
'F'     ISO 8601 格式的完整日期,被格式化爲 "%tY-%tm-%td"。
'c'     日期和時間,被格式化爲 "%ta %tb %td %tT %tZ %tY",例如 "Sun Jul 20 16:17:00 EDT 1969"。

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