JAva文字列フォーマットString.format()使用

20221 ワード

標準タイプの書式設定
Stringクラスのformat()メソッドは、フォーマットされた文字列を作成し、複数の文字列オブジェクトを接続するために使用されます.C言語を熟知している学生はC言語のsprintf()方法を覚えなければならない.両者には類似点がある.format()メソッドには2つのリロード形式がある.
  • format(String format,Object...args)新しい文字列ローカル言語環境を使用して、文字列フォーマットとパラメータを作成してフォーマットされた新しい文字列を生成します.
  • format(Locale locale,String format,Object...args)指定した言語環境を使用して、文字列フォーマットとパラメータを作成してフォーマットされた文字列を生成します.

  • 図に示すように、異なる変換子を表示して、異なるデータ型から文字列への変換を実現します.
    へんかんし
    説明

    %s
    文字列タイプ
    “mingrisoft”
    %c
    文字の種類
    ‘m’
    %b
    ブール型
    true
    %d
    整数タイプ(10進数)
    99
    %x
    整数タイプ(16進数)
    FF
    %o
    整数タイプ(8進数)
    77
    %f
    浮動小数点の種類
    99.99
    %a
    16進浮動小数点タイプ
    FF.35AE
    %e
    指数タイプ
    9.38e+5
    %g
    汎用浮動小数点タイプ(fおよびeタイプで短い)
    %h
    ハッシュコード
    %%
    パーセントタイプ

    %n
    改行
    %tx
    日付と時間タイプ(xは異なる日付と時間変換子を表す
    テストケース
    public static void main(String[] args) {  
        String str=null;  
        str=String.format("Hi,%s", "  ");  
        System.out.println(str);  
        str=String.format("Hi,%s:%s.%s", "  ","  ","  ");            
        System.out.println(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');  
    }  

    出力結果
    Hi,    
    Hi,  :  .    
      a    :A   
    3>7false   
    10050   
    100 1664   
    100 8144   
    50    8.542.500000    
         160x1.54p5   
             :4.250000e+0142.5000   
          85%   
      A     :41  

    変換子のマークを合わせる
    ひょうしき
    説明

    結果
    +
    正または負の記号を追加
    (“%+d”,15)
    +15

    左揃え
    (“%-5d”,15)
    |15   |
    0
    数字の前に0を補う
    (“%04d”, 99)
    0099
    スペース
    指定した数のスペースを整数の前に追加
    (“% 4d”, 99)
    |  99|
    ,
    「,」で数値をグループ化
    (“%,f”, 9999.99)
    9,999.990000
    (
    かっこで負数を含める
    (“%(f”, -99.99)
    (99.990000)
    #
    浮動小数点数の場合は小数点、16進数または8進数の場合は0 xまたは0を追加
    (“%#x”, 99)(“%#o”, 99)
    0x63 0143
    <
    前の変換子で説明したパラメータのフォーマット
    ("%fおよび%<3.2 f",99.45)
    99.45,000および99.45
    $
    フォーマットされたパラメータインデックス
    (“%1$d,%2$s”, 99,”abc”)
    99,abc
    テストケース
    public static void main(String[] args) {  
        String str=null;  
        //$    
        str=String.format("    $   :%1$d,%2$s", 99,"abc");             
        System.out.println(str);                       
        //+    
        System.out.printf("        :%+d %d%n", 99,-99);  
        // O    
        System.out.printf("      :%03d%n", 7);  
        //      
        System.out.printf("Tab     :% 8d%n", 7);  
        //.    
        System.out.printf("        :%,d%n", 9989997);  
        //            
        System.out.printf("       :% 50.5f %n", 49.8);  
    }  

    出力結果
        $ 99,abc  
            :+99 -99007  
    Tab79,989,99749.80000   

    日付とイベント文字列のフォーマット
    プログラムインタフェースでは、時間と日付を表示する必要があることが多いが、表示されるフォーマットが不十分であることが多く、多くのコードを記述して様々なアルゴリズムを経て理想的な日付と時間フォーマットを得る必要がある.文字列フォーマットには、日付と時間をフォーマットするために使用される%tx変換子も詳しく説明されていない.%tx変換子のxは、別の処理日と時間を表す日付と時刻を複数のフォーマットにフォーマットできるフォーマットの変換子.
    一般的な日付と時刻の組み合わせのフォーマット
    へんかんし
    説明

    c
    すべての日付と時刻情報を含める
    土曜日27 14:21:20 CST 2007
    F
    年-月-日
    2007-10-27
    D
    月/日/年
    10/27/07
    r
    「HH:MM:SS PM」形式(12時制)
    02:25:51午後
    T
    「HH:MM:SS」形式(24時制)
    14:28:16
    R
    「HH:MM」形式(24時制)
    14:28
    テストケース
    public static void main(String[] args) {  
        Date date=new Date();                                  
        //c     
        System.out.printf("         :%tc%n",date);          
        //f     
        System.out.printf(" - -   :%tF%n",date);  
        //d     
        System.out.printf(" / /   :%tD%n",date);  
        //r     
        System.out.printf("HH:MM:SS PM  (12  ):%tr%n",date);  
        //t     
        System.out.printf("HH:MM:SS  (24  ):%tT%n",date);  
        //R     
        System.out.printf("HH:MM  (24  ):%tR",date);  
    }  

    出力結果
    10 10:43:36 CST 2012  
     - -   :2012-09-10  
     / /   :09/10/12  
    HH:MM:SS PM12  ):10:43:36     
    HH:MM:SS24  ):10:43:36  
    HH:MM24  ):10:43  

    日付フォーマットを定義する変換子は、指定した変換子によって日付を新しい文字列に生成します.これらの日付変換子は図に示されています.
    public static void main(String[] args) {  
        Date date=new Date();                                      
        //b   ,      
        String str=String.format(Locale.US,"      :%tb",date);       
        System.out.println(str);                                                                              
        System.out.printf("      :%tb%n",date);  
        //B   ,      
        str=String.format(Locale.US,"      :%tB",date);  
        System.out.println(str);  
        System.out.printf("      :%tB%n",date);  
        //a   ,      
        str=String.format(Locale.US,"       :%ta",date);  
        System.out.println(str);  
        //A   ,      
        System.out.printf("       :%tA%n",date);  
        //C   ,      
        System.out.printf("       (       0):%tC%n",date);  
        //y   ,      
        System.out.printf("       (       0):%ty%n",date);  
        //j   ,       
        System.out.printf("      (      ):%tj%n",date);  
        //m   ,    
        System.out.printf("       (       0):%tm%n",date);  
        //d   , (  ,    )  
        System.out.printf("      (       0):%td%n",date);  
        //e   , (     )  
        System.out.printf("    (    0):%te",date);  
    }  

    出力結果
          :Sep  
          :    
          :September  
          :    
           :Mon  
           :     
           (       0):20  
           (       0):12  
          (      ):254  
           (       0):09  
          (       0):10  
        (    0):10  

    日付フォーマット変換子と比較して、時間フォーマットの変換子はより多く、より正確です.時間を時間、分、秒、さらには時間ミリ秒などの単位にフォーマットできます.フォーマット時間文字列の変換子は図のように表示されます.
    へんかんし
    説明

    H
    2桁数字24時制の時間(2桁未満前に0を補う)
    15
    I
    2桁数字12時制の時間(2桁未満前に0を補う)
    03
    k
    2桁数字24時制の時間(前は0を補わない)
    15
    l
    2桁数字12時制の時間(前は0を補わない)
    3
    M
    2桁分(2桁未満前に0を補う)
    03
    S
    2桁の秒(2桁未満前に0を足します)
    09
    L
    3桁のミリ秒(3桁未満の前に0を補う)
    015
    N
    9桁のミリ秒数(9桁未満前に0を補う)
    562000000
    p
    小文字の午前または午後のマーク
    日:午後英:pm
    z
    GMTに対するRFC 822タイムゾーンのずれ量
    +0800
    Z
    タイムゾーンの省略文字列
    CST
    s
    1970-1-1 00:00:00から現在までの経過秒数
    1193468128
    Q
    1970-1-1 00:00:00から現在までのミリ秒数
    1193468128984
    テストコード
    public static void main(String[] args) {  
        Date date = new Date();  
        //H     
        System.out.printf("2   24     (  2    0):%tH%n", date);  
        //I     
        System.out.printf("2   12     (  2    0):%tI%n", date);  
        //k     
        System.out.printf("2   24     (    0):%tk%n", date);  
        //l     
        System.out.printf("2   12     (    0):%tl%n", date);  
        //M     
        System.out.printf("2      (  2    0):%tM%n", date);  
        //S     
        System.out.printf("2     (  2    0):%tS%n", date);  
        //L     
        System.out.printf("3      (  3    0):%tL%n", date);  
        //N     
        System.out.printf("9       (  9    0):%tN%n", date);  
        //p     
        String str = String.format(Locale.US, "            ( ):%tp", date);  
        System.out.println(str);   
        System.out.printf("            ( ):%tp%n", date);  
        //z     
        System.out.printf("   GMT RFC822      :%tz%n", date);  
        //Z     
        System.out.printf("       :%tZ%n", date);  
        //s     
        System.out.printf("1970-1-1 00:00:00          :%ts%n", date);  
        //Q     
        System.out.printf("1970-1-1 00:00:00           :%tQ%n", date);  
    }  

    出力結果
    2   24     (  2    0):11  
    2   12     (  2    0):11  
    2   24     (    0):11  
    2   12     (    0):11  
    2      (  2    0):03  
    2     (  2    0):52  
    3      (  3    0):773  
    9       (  9    0):773000000  
                ( ):am  
                ( ):    
       GMT RFC822      :+0800  
           :CST  
    1970-1-1 00:00:00          :1347246232  
    1970-1-1 00:00:00           :1347246232773 

    転載元:JAVA文字列フォーマット-SDring.format()の使用参考:java文字列フォーマット:String.format()メソッドの使用Java魔法堂:String.format Javaにおける文字列のフォーマットの詳細