String.format()の詳細な使い方

5544 ワード

問題
開発時には文字列の中の一部が可変的に必要です.例えば、Textviewの表示が必要です.XXXユーザーは上海の年齢21歳の性別男性から来ます.  その中のXXXはユーザー名で、ユーザーによっても違います.  地域の上海は可変のstringデータです.  年齢21は可変のintデータです.  性別男は可変のstringデータです.  このような状況に遭遇したら、あなた達はどう解決しますか?この文字列を定数クラスに保存しますか?いいえGoogleの開発モデルに従うべきです.
XML
%2$s     %3$d     %4$s  
JAVA
  • String userName="XXX";
  • String userProvince=" ";
  • int userAge=21;
  • String userSex=" ";
  • String string=getResources().getString(R.string.user_info);
  • String userInfo=String.format(string,userName,userProvince,userAge,userSex);
  • 便利だと思いますか?  ノートにメモしておくつもりですが、友達に聞いたことがあります.完璧にしましょう.
    String.format()文字列の一般的なタイプのフォーマットの2つのリロード方法
  • format(String format,Object...args)の新しい文字列は、ローカル言語環境を使用して、文字列フォーマットとパラメータ生成フォーマットの新しい文字列を作成します.
  • フォーマット(Locale locale,String format,Object…args)は指定された言語環境を用いて文字列フォーマットとパラメータ生成フォーマットの文字列を作成します.
  • 前の栗はキャラクタータイプと整数タイプのフォーマットがあります.下の例を挙げます.
    変換子
    詳細に説明する

    %s
    文字列の種類
    好きです.どうぞ.
    %c
    文字の種類
    ‘m’
    %b
    ブールの種類
    true
    %d
    整数タイプ(十進数)
    88
    %x
    整数タイプ(16進数)
    FF
    %o
    整数タイプ(8進数)
    77
    %f
    浮動小数点のタイプ
    8.888
    %a
    16進浮動小数点タイプ
    FF.35 AE
    %e
    指数の種類
    9.38 e+5
    %g
    汎用浮動小数点タイプ(fとeタイプのうち、比較的短い)
    例を挙げないと、ほとんど使えません.
    %h
    ハッシュコード
    例を挙げないと、ほとんど使えません.
    %
    パーセンテージのタイプ
    %(%特殊文字%%のみ表示できます)
    %n
    行の区切り
    例を挙げないと、ほとんど使えません.
    %tx
    日付と時間の種類(xは異なる日付と時間の変換子を表す)
    例を挙げないと、ほとんど使えません.
    分かりやすいように例をあげます.
     
  • 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(" c :%c %n", 'C');
  • System.out.printf(" :%b %n", " ".equal(" "));
  • 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,
  • c :C
  • :false
  • 100 :50
  • 100 16 :64
  • 100 8 :144
  • 50 8.5 :42.500000
  • 16 :0x1.54p5
  • :4.250000e+01
  • :42.5000
  • 85%
  • A :41
  • 萼萼菗との取り合わせ変換符は、高級機能を実現する最初の例では$
    標識
    説明

    結果

    正または負の数に記号を追加します.
    (「%+d」,15)
    +15
    0
    数字の前で0を埋める(暗号化でよく使う)
    (「%04 d」,99)
    0099
    スペース
    整数の前に指定された数のスペースを追加します.
    (「%4 d」、99)
    99
    を選択します.
    を選択します.
    (「%,f」,99999.99)
    9,999,900
    (
    かっこで負の数を含む
    (「%(f)-99.99)
    (99.90000)
    同前
    浮動小数点であれば小数点を含み、16進数または8進数であれば0 xまたは0を加えます.
    (「%xi x」,99)(「%〹o」,99)
    0 x 63 0143
    <>
    前の変換子のパラメータを書式設定します.
    (「%f和%<3.2f],99.45)
    99.4500と99.45
    d,%2's',99''abc')
    99,abc
     
     
    最初の例では、%txは日付変換子を表しています.ついでに日付変換子を列挙します.
    標識
    説明

    c
    全部の日付と時間情報を含みます.
    60月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
    実例を示してくれたら分かりやすいです.
  • 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);
  • 出力結果
  • : 21 22:43:36 CST 2016
  • - - :2016-09-21
  • / / :16/10/21
  • HH:MM:SS PM (12 ):10:43:36
  • HH:MM:SS (24 ):22:43:36
  • HH:MM (24 ):22:43
  • 実は他にも面白い遊びがたくさんあります.私はよく使う興味のある友達を列挙します.自分でもっと調べてください.