import java.util.Date;
public class StringFormatT {
 public static void main(String[] args) {
  System.out.println("===== test argument index ======================================================");
  System.out.println("original\t10\t20");
  System.out.println("format\t\t%1$s\t%1$d\t%2$s\t%2$d");
  System.out.println(String.format("result\t\t\"%1$s\"\t%1$d\t\"%2$s\"\t%2$d", 10, 20));
  System.out.println("original\t10\t20\t30\t40");
  System.out.println("format\t\t%1$s\t%3$d\t%4$s\t%2$d");
  System.out.println(String.format("result\t\t\"%1$s\"\t%3$d\t\"%4$s\"\t%2$d", 10, 20, 30, 40));
  System.out.println("================================================================================");
  System.out.println("===== formatted as string ======================================================");
  System.out.println("original\t\"abc\"\tnull\t(byte)1\t3.14");
  System.out.println("format\t\t%s\t%S\t%s\t%S");
  System.out.println(String.format("result\t\t%s\t%S\t%s\t%S", "abc", null, (byte)1, 3.14));
  System.out.println("================================================================================");
  System.out.println("===== formatted as boolean =====================================================");
  System.out.println("original\t\"abc\"\tnull\t(byte)1\t3.14");
  System.out.println("format\t\t%b\t%B\t%b\t%B");
  System.out.println(String.format("result\t\t%b\t%B\t%b\t%B", "abc", null, (byte)1, 3.14));
  System.out.println("================================================================================");
  System.out.println("===== formatted as hex =========================================================");
  System.out.println("original\t\"100\"\tnull\t100\tnew Integer(100)\t3.14");
  System.out.println("format\t\t%h\t%H\t%h\t%H\t\t\t%h");
  System.out.println(String.format("result\t\t%h\t%H\t%h\t%H\t\t\t%h", "100", null, 100, new Integer(100), 3.14));
  System.out.println("================================================================================");
  System.out.println("===== formatted as character ===================================================");
  System.out.println("original\t'A'\t97\t97");
  System.out.println("format\t\t%s\t%C\t%c");
  System.out.println(String.format("result\t\t%s\t%C\t%c", 'A', 97, 97));
  System.out.println("================================================================================");
  System.out.println("===== formatted as integer =====================================================");
  System.out.println("original\t100\t100\t100");
  System.out.println("format\t\t%d\t%o\t%h");
  System.out.println(String.format("result\t\t%d\t%o\t%h", 100, 100, 100));
  System.out.println("================================================================================");
  System.out.println("===== formatted as big number ==================================================");
  System.out.println("original\t123456789L");
  System.out.println("format\t\t%1$d\t\t%1$,d");
  System.out.println(String.format("result\t\t%1$d\t%1$,d", 123456789L));
  System.out.println("================================================================================");
  System.out.println("===== formatted as float =======================================================");
  System.out.println("original\t123456789.98765");
  System.out.println("format\t\t%1$.2a\t\t%1$.2e\t\t%1$.2f\t\t%1$.2g");
  System.out.println(String.format("result\t\t%1$.2a\t%1$.2e\t%1$.2f\t%1$.2g", 123456789.98765));
  System.out.println("================================================================================");
  System.out.println("===== formatted as date ========================================================");
  long currentTime = System.currentTimeMillis();
  Date date = new Date();
  System.out.println("original\tCurrent datetime use System.currentTimeMillis()");
  System.out.println("format\t\t%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS");
  System.out.println(String.format("result\t\t%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS", currentTime));
  System.out.println("format\t\t%1$tF %1$tT");
  System.out.println(String.format("result\t\t%1$tF %1$tT", currentTime));
  System.out.println("original\tCurrent datetime use java.util.Date");
  System.out.println("format\t\t%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS");
  System.out.println(String.format("result\t\t%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS", date));
  System.out.println("================================================================================");
  System.out.println("===== What's the effect of width.precision on String? ==========================");
  System.out.println("original\tabcdefg");
  System.out.println("format\t\t[%1$s]\t\t[%1$10s]\t[%1$10.4s]\t[%1$-10s]");
  System.out.println(String.format("result\t\t[%1$s]\t[%1$10s]\t[%1$10.4s]\t[%1$-10s]", "abcdefg"));
  System.out.println("================================================================================");
  System.out.println("===== padding easy ==========================");
  System.out.println("original\tadd leading zero");
  System.out.println("format\t\t%012d");
  System.out.println(String.format("result\t\t%012d", 123));
  System.out.println("================================================================================");
  System.out.println("===== test new line ============================================================");
  System.out.println("original\t[%n]");
  System.out.println("format\t\t%n");
  System.out.println(String.format("result\t\t[%n]"));
  System.out.println("================================================================================");
 }
}結果顯示:
===== test argument index ======================================================
original        10      20
format          %1$s    %1$d    %2$s    %2$d
result          "10"    10      "20"    20
original        10      20      30      40
format          %1$s    %3$d    %4$s    %2$d
result          "10"    30      "40"    20
================================================================================
===== formatted as string ======================================================
original        "abc"   null    (byte)1 3.14
format          %s      %S      %s      %S
result          abc     NULL    1       3.14
================================================================================
===== formatted as boolean =====================================================
original        "abc"   null    (byte)1 3.14
format          %b      %B      %b      %B
result          true    FALSE   true    TRUE
================================================================================
===== formatted as hex =========================================================
original        "100"   null    100     new Integer(100)        3.14
format          %h      %H      %h      %H                      %h
result          bdf1    NULL    64      64                      11e29ba7
================================================================================
===== formatted as character ===================================================
original        'A'     97      97
format          %s      %C      %c
result          A       A       a
================================================================================
===== formatted as integer =====================================================
original        100     100     100
format          %d      %o      %h
result          100     144     64
================================================================================
===== formatted as big number ==================================================
original        123456789L
format          %1$d            %1$,d
result          123456789       123,456,789
================================================================================
===== formatted as float =======================================================
original        123456789.98765
format          %1$.2a          %1$.2e          %1$.2f          %1$.2g
result          0x1.d7p26       1.23e+08        123456789.99    1.2e+08
================================================================================
===== formatted as date ========================================================
original        Current datetime use System.currentTimeMillis()
format          %1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS
result          2013-05-13 16:08:57
format          %1$tF %1$tT
result          2013-05-13 16:08:57
original        Current datetime use java.util.Date
format          %1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS
result          2013-05-13 16:08:57
================================================================================
===== What's the effect of width.precision on String? ==========================
original        abcdefg
format          [%1$s]          [%1$10s]        [%1$10.4s]      [%1$-10s]
result          [abcdefg]       [   abcdefg]    [      abcd]    [abcdefg   ]
================================================================================
===== padding easy ==========================
original        add leading zero
format          %012d
result          000000000123
================================================================================
===== test new line ============================================================
original        [%n]
format          %n
result          [
]
================================================================================
 
沒有留言:
張貼留言