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は異なる日付と時間変換子を表す
テストケース
出力結果
変換子のマークを合わせる
ひょうしき
説明
例
結果
+
正または負の記号を追加
(“%+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
テストケース
出力結果
日付とイベント文字列のフォーマット
プログラムインタフェースでは、時間と日付を表示する必要があることが多いが、表示されるフォーマットが不十分であることが多く、多くのコードを記述して様々なアルゴリズムを経て理想的な日付と時間フォーマットを得る必要がある.文字列フォーマットには、日付と時間をフォーマットするために使用される%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
テストケース
出力結果
日付フォーマットを定義する変換子は、指定した変換子によって日付を新しい文字列に生成します.これらの日付変換子は図に示されています.
出力結果
日付フォーマット変換子と比較して、時間フォーマットの変換子はより多く、より正確です.時間を時間、分、秒、さらには時間ミリ秒などの単位にフォーマットできます.フォーマット時間文字列の変換子は図のように表示されます.
へんかんし
説明
例
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
テストコード
出力結果
転載元:JAVA文字列フォーマット-SDring.format()の使用参考:java文字列フォーマット:String.format()メソッドの使用Java魔法堂:String.format Javaにおける文字列のフォーマットの詳細
Stringクラスのformat()メソッドは、フォーマットされた文字列を作成し、複数の文字列オブジェクトを接続するために使用されます.C言語を熟知している学生はC言語のsprintf()方法を覚えなければならない.両者には類似点がある.format()メソッドには2つのリロード形式がある.
図に示すように、異なる変換子を表示して、異なるデータ型から文字列への変換を実現します.
へんかんし
説明
例
%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>7 :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
−
左揃え
(“%-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 -99
:007
Tab : 7
:9,989,997
: 49.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 PM (12 ):10:43:36
HH:MM:SS (24 ):10:43:36
HH:MM (24 ):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における文字列のフォーマットの詳細