Java String字符串的格式化

JDK1.5中,String类新增了一个很有用的静态方法String.format():
format(Locale l, String format, Object... args) 使用指定的语言环境、格式字符串和参数返回一个格式化字符串。

format(String format, Object... args) 使用指定的格式字符串和参数返回一个格式化字符串。format()方法中的字符串格式参数有很多种转换符选项,例如:日期、整数、浮点数等。

一、常规格式化

\

例子:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<span style= "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' );
}</span>
运行结果:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
<span style= "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 </span>
这些字符串格式参数不但可以灵活将其他数据类型转换成字符串,而且可以与各种标志组合在一起,生成各种格式的字符串

\
例子:

?
1
2
3
4
5
6
7
8
9
10
<span style= "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 );
}</span>
运行结果:

 

?
1
2
3
4
5
6
<span style= "font-family:Microsoft YaHei;font-size:14px;" >格式参数$的使用: 99 ,abc
显示正负数的符号:+ 99 与- 99
最牛的编号是: 007
Tab键的效果是:       7
整数分组的效果是: 9 , 989 , 997
一本书的价格是: 49.80 元</span>
二、常见日期时间格式化

 

\
例子:

?
1
2
3
4
5
6
7
8
9
<span style= "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);
}</span>
运行结果:

 

?
1
2
3
4
5
6
<span style= "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 </span>
三、格式化日期字符串

 

\
例子:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<span style= "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);
}</span>
运行结果:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
<span style= "font-family:Microsoft YaHei;font-size:14px;" >英文月份简称:Oct
本地月份简称:十月
英文月份全称:October
本地月份全称:十月
英文星期的简称:Sun
本地星期的简称:星期日
年的前两位数字(不足两位前面补 0 ): 20
年的后两位数字(不足两位前面补 0 ): 07
一年中的天数(即年的第几天): 301
两位数字的月份(不足两位前面补 0 ): 10
两位数字的日(不足两位前面补 0 ): 28
月份的日(前面不补 0 ): 28 </span>
四、格式化时间字符串

 

\
例子:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<span style= "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);
}</span>
运行结果:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<span style= "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 </span>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值