new String.Format(Locale l,string format,Object args)中字符串格式化

JDK1.5中,String类新增了一个很有用的静态方法String.format():
format(Locale l, String format, Object... args) 使用指定的语言环境、格式字符串和参数返回一个格式化字符串。
format(String format, Object... args) 使用指定的格式字符串和参数返回一个格式化字符串。format()方法中的字符串格式参数有很多种转换符选项,例如:日期、整数、浮点数等。

一、常规格式化

new String.Format(Locale l,string format,Object args)中字符串格式化_第1张图片

 

 

例子:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
"FONT-FAMILY: Microsoft YaHei; FONT-SIZE: 14px" > public static void main(String[] args) {
     String str= null ;
     str=String.format( "Hi,%s" , "飞龙" );          // 格式化字符串
     System.out.println(str);                             // 输出字符串变量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' );
}

运行结果:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
"FONT-FAMILY: Microsoft YaHei; FONT-SIZE: 14px" >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

这些字符串格式参数不但可以灵活将其他数据类型转换成字符串,而且可以与各种标志组合在一起,生成各种格式的字符串

new String.Format(Locale l,string format,Object args)中字符串格式化_第2张图片

 


例子:

?
1
2
3
4
5
6
7
8
9
10
"FONT-FAMILY: Microsoft YaHei; FONT-SIZE: 14px" > 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 );
     System.out.printf( "最牛的编号是:%03d%n" , 7 );
     System.out.printf( "Tab键的效果是:% 8d%n" , 7 );
     System.out.printf( "整数分组的效果是:%,d%n" , 9989997 );
     System.out.printf( "一本书的价格是:%2.2f元%n" , 49.8 );
}

运行结果:

 

?
1
2
3
4
5
6
"FONT-FAMILY: Microsoft YaHei; FONT-SIZE: 14px" >格式参数$的使用: 99 ,abc
显示正负数的符号:+ 99 与- 99
最牛的编号是: 007
Tab键的效果是:       7
整数分组的效果是: 9 , 989 , 997
一本书的价格是: 49.80

二、常见日期时间格式化

 

new String.Format(Locale l,string format,Object args)中字符串格式化_第3张图片
例子:

?
1
2
3
4
5
6
7
8
9
"FONT-FAMILY: Microsoft YaHei; FONT-SIZE: 14px" > public static void main(String[] args) {
     Date date= new Date();                                              
     System.out.printf( "全部日期和时间信息:%tc%n" ,date);               
     System.out.printf( "年-月-日格式:%tF%n" ,date);
     System.out.printf( "月/日/年格式:%tD%n" ,date);
     System.out.printf( "HH:MM:SS PM格式(12时制):%tr%n" ,date);
     System.out.printf( "HH:MM:SS格式(24时制):%tT%n" ,date);
     System.out.printf( "HH:MM格式(24时制):%tR" ,date);
}

运行结果:

 

?
1
2
3
4
5
6
"FONT-FAMILY: Microsoft YaHei; FONT-SIZE: 14px" >全部日期和时间信息:星期日十月 28 13 : 53 : 24 CST 2007
年-月-日格式: 2007 - 10 - 28
月/日/年格式: 10 / 28 / 07
HH:MM:SS PM格式( 12 时制): 01 : 53 : 24 下午
HH:MM:SS格式( 24 时制): 13 : 53 : 24
HH:MM格式( 24 时制): 13 : 53

三、格式化日期字符串

 

new String.Format(Locale l,string format,Object args)中字符串格式化_第4张图片
例子:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
"FONT-FAMILY: Microsoft YaHei; FONT-SIZE: 14px" > public static void main(String[] args) {
     Date date= new Date();                                          
     String str=String.format(Locale.US, "英文月份简称:%tb" ,date);      
     System.out.println(str);                                           
     System.out.printf( "本地月份简称:%tb%n" ,date);
     str=String.format(Locale.US, "英文月份全称:%tB" ,date);
     System.out.println(str);
     System.out.printf( "本地月份全称:%tB%n" ,date);
     str=String.format(Locale.US, "英文星期的简称:%ta" ,date);
     System.out.println(str);
     System.out.printf( "本地星期的简称:%tA%n" ,date);
     System.out.printf( "年的前两位数字(不足两位前面补0):%tC%n" ,date);
     System.out.printf( "年的后两位数字(不足两位前面补0):%ty%n" ,date);
     System.out.printf( "一年中的天数(即年的第几天):%tj%n" ,date);
     System.out.printf( "两位数字的月份(不足两位前面补0):%tm%n" ,date);
     System.out.printf( "两位数字的日(不足两位前面补0):%td%n" ,date);
     System.out.printf( "月份的日(前面不补0):%te" ,date);
}

运行结果:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
"FONT-FAMILY: Microsoft YaHei; FONT-SIZE: 14px" >英文月份简称:Oct
本地月份简称:十月
英文月份全称:October
本地月份全称:十月
英文星期的简称:Sun
本地星期的简称:星期日
年的前两位数字(不足两位前面补 0 ): 20
年的后两位数字(不足两位前面补 0 ): 07
一年中的天数(即年的第几天): 301
两位数字的月份(不足两位前面补 0 ): 10
两位数字的日(不足两位前面补 0 ): 28
月份的日(前面不补 0 ): 28

四、格式化时间字符串

 

new String.Format(Locale l,string format,Object args)中字符串格式化_第5张图片
例子:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
"FONT-FAMILY: Microsoft YaHei; FONT-SIZE: 14px" > public static void main(String[] args) {
     Date date= new Date();                               // 创建日期对象
     System.out.printf( "2位数字24时制的小时(不足2位前面补0):%tH%n" ,date);
     System.out.printf( "2位数字12时制的小时(不足2位前面补0):%tI%n" ,date);
     System.out.printf( "2位数字24时制的小时(前面不补0):%tk%n" ,date);
     System.out.printf( "2位数字12时制的小时(前面不补0):%tl%n" ,date);
     System.out.printf( "2位数字的分钟(不足2位前面补0):%tM%n" ,date);
     System.out.printf( "2位数字的秒(不足2位前面补0):%tS%n" ,date);
     System.out.printf( "3位数字的毫秒(不足3位前面补0):%tL%n" ,date);
     System.out.printf( "9位数字的毫秒数(不足9位前面补0):%tN%n" ,date);
     String str=String.format(Locale.US, "小写字母的上午或下午标记(英):%tp" ,date);
     System.out.println(str);                          // 输出字符串变量str的内容
     System.out.printf ( "小写字母的上午或下午标记(中):%tp%n" ,date);
     System.out.printf( "相对于GMT的RFC822时区的偏移量:%tz%n" ,date);
     System.out.printf( "时区缩写字符串:%tZ%n" ,date);
     System.out.printf( "1970-1-1 00:00:00 到现在所经过的秒数:%ts%n" ,date);
     System.out.printf( "1970-1-1 00:00:00 到现在所经过的毫秒数:%tQ%n" ,date);
}

运行结果:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
"FONT-FAMILY: Microsoft YaHei; FONT-SIZE: 14px" > 2 位数字 24 时制的小时(不足 2 位前面补 0 ): 15
2 位数字 12 时制的小时(不足 2 位前面补 0 ): 03
2 位数字 24 时制的小时(前面不补 0 ): 15
2 位数字 12 时制的小时(前面不补 0 ): 3
2 位数字的分钟(不足 2 位前面补 0 ): 24
2 位数字的秒(不足 2 位前面补 0 ): 56
3 位数字的毫秒(不足 3 位前面补 0 ): 828
9 位数字的毫秒数(不足 9 位前面补 0 ): 828000000
小写字母的上午或下午标记(英):pm
小写字母的上午或下午标记(中):下午
相对于GMT的RFC822时区的偏移量:+ 0800
时区缩写字符串:CST
1970 - 1 - 1 00 : 00 : 00 到现在所经过的秒数: 1193556296
1970 - 1 - 1 00 : 00 : 00 到现在所经过的毫秒数: 1193556296828

 

你可能感兴趣的:(java,String,Format)