Java 字符串的格式化String.format

String类的format()方法用于创建格式化的字符串以及连接多个字符串对象。

有2个重载的方法:
1、static String format(Locale l, String format, Object... args)
使用指定的语言环境、字符串格式和参数生成格式化的新字符串
2、static String format(String format, Object... args)
使用指定的字符串格式和参数生成格式化的新字符串

locale:指定的语言环境参数。
format:字符串格式参数,有很多种转换符选项,例如:日期、整数、浮点数等。转换符见下表
args...:字符串格式中由格式说明符引用的参数。对整数进行格式化:%[index$][标识][最小宽度]转换方式
对浮点数进行格式化:%[index$][标识][最少宽度][.精度]转换方式

转  换  符

说    明 

示    例

%s

字符串类型

"mingrisoft"

%c

字符类型

'm'

%b

布尔类型

true

%d

整数类型(十进制)

99

%x

整数类型(十六进制)

FF

%o

整数类型(八进制)

77

%f

浮点类型

99.99

%a

十六进制浮点类型

FF.35AE

%e

指数类型

9.38e+5

%g

通用浮点类型(f和e类型中较短的)

 

%h

散列码

 

%%

百分比类型

%n

换行符

 

%tx

日期与时间类型(x代表不同的日期与时间转换符

 

实例:

public class StringFormatDemo1 {
    public static void main(String arg[]) {
    
     String s = String.format("%s%s %c %b %d %x %o %f %d%%", "Hello", "World", 'a', true, 10, 10, 10, 10.0, 10);
     System.out.println(s);
/*
HelloWorld a true 10 a 12 10.000000 10%
*/
    }
}

字符串格式参数还可以与各种标志组合在一起,生成各种格式的字符串,这些标志见下表:

标    志

说    明

示    例

结    果

+

为正数或者负数添加符号

("%+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进制则添加0x或0

("%#x", 99)

("%#o", 99)

0x63

0143

格式化前一个转换符所描述的参数

("%f和%<3.2f", 99.45)

99.450000和99.45

$

被格式化的参数索引

("%1$d,%2$s", 99,"abc")

99,abc

实例:

public class StringFormatDemo2 {
    public static void main(String arg[]) {
    
     //+:为正数或者负数添加符号
     String s = String.format("%+d  %+d  %d", 0, -10, -10);
     System.out.println(s);
/*
+0  -10  -10
*/

     //0:数字前面补0,后面加数字为总位数
     //<:格式化前一个转换符所描述的参数
     s = String.format("%01d  %<02d  %<03d  %<04d", 10);
     System.out.println(s);
/*
10  10  010  0010
*/

     //,:以“,”对数字分组
     s = String.format("%,d  %,f", 100000, 100000.0);
     System.out.println(s);
/*
100,000  100,000.000000
*/

     //$:被格式化的参数索引
     s = String.format("%1$s  %3$d  %2$s", "abc", "def", 10);
     System.out.println(s);
/*
abc  10  def
*/

     //[最小宽度]:在整数转换符中不加空格、或加1个空格,以指定整数的总位数
     s = String.format("|%3d|  |% 3d|  |% 4d|", 10, 20, 30);
     System.out.println(s);
/*
| 10|  | 20|  |  30|
*/

     //[最小宽度]:在字符串转换符中加空格,以指定字符串的总位数
     s = String.format("|%3s|  |%<3s|  |%<3s|", "a");
     System.out.println(s);
/*
|  a|  |  a|  |  a|
*/


    }
}

%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

日期格式化转换符:

转  换  符

说    明

示    例

b或者h

月份简称

中:十月

英:Oct

B

月份全称

中:十月

英:October

a

星期的简称

中:星期六

英:Sat

A

星期的全称

中:星期六

英:Saturday

C

年的前两位数字(不足两位前面补0)

20

y

年的后两位数字(不足两位前面补0)

07

Y

4位数字的年份(不足4位前面补0)

2007

j

一年中的天数(即年的第几天)

300

m

两位数字的月份(不足两位前面补0)

10

d

两位数字的日(不足两位前面补0)

27

e

月份的日(前面不补0)

5

时间格式化转换符:

转  换  符

说    明

示    例

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的RFC822时区的偏移量

+0800

Z

时区缩写字符串

CST

s

1970-1-1 00:00:00 到现在所经过的秒数

1193468128

Q

1970-1-1 00:00:00 到现在所经过的毫秒数

1193468128984

实例:

import java.util.*;

public class StringFormatDemo3 {
  public static void main(String arg[]) {
    
     Date date = new Date();  

     //c:包括全部日期和时间信息
     String s = String.format("%tc", date);
     System.out.println(s);
/*
星期二 十二月 10 22:34:51 CST 2013
*/
     //F:“年-月-日”格式
     s = String.format("%tF", date);
     System.out.println(s);
/*
2013-12-10
*/
     //D:“月/日/年”格式
     s = String.format("%tD", date);
     System.out.println(s);
/*
12/10/13
*/
     //r:“HH:MM:SS PM”格式(12时制)
     s = String.format("%tr", date);
     System.out.println(s);
/*
10:34:51 下午
*/
     //T:“HH:MM:SS”格式(24时制)
     s = String.format("%tT", date);
     System.out.println(s);
/*
22:34:51
*/
     //R:“HH:MM”格式(24时制)
     s = String.format("%tR", date);
     System.out.println(s);
/*
22:34
*/

     //a:星期的简称 A:星期的全称(全称只对英文语言环境有效:全Saturday、简Sat)
     s = String.format("%ta", date);
     System.out.println(s);
/*
星期二
*/

     //b或h:月份简称 B:月份全称(全称只对英文语言环境有效)
     //t:格式化前一个转换符所描述的参数
     s = String.format(Locale.US, "%th %<tB", date);
     System.out.println(s);
/*
Dec December
*/

     //Y:4位数字的年份(不足4位前面补0)y:年的后两位数字(不足两位前面补0)
     s = String.format("%ty %tY", date, date);
     System.out.println(s);
/*
13 2013
*/


     //j:一年中的天数(即年的第几天)
     //m:两位数字的月份(不足两位前面补0)
     //d:两位数字的日(不足两位前面补0)
     //e:月份的日(前面不补0)
     s = String.format("%tj %<tm %<td %<te", date);
     System.out.println(s);
/*
344 12 10 10
*/

     //H:2位数字24时制的小时(不足2位前面补0)
     //I:2位数字12时制的小时(不足2位前面补0)
     //k:2位数字24时制的小时(前面不补0)
     //l:2位数字12时制的小时(前面不补0)
     s = String.format("%tH %<tI %<tk %<tl", date);
     System.out.println(s);
/*
22 10 22 10
*/

     //M:2位数字的分钟(不足2位前面补0)
     //S:2位数字的秒(不足2位前面补0)
     //L:3位数字的毫秒(不足3位前面补0)
     //N:9位数字的毫秒数(不足9位前面补0)
     //p:小写字母的上午或下午标记
     //s:1970-1-1 00:00:00 到现在所经过的秒数
     //Q:1970-1-1 00:00:00 到现在所经过的毫秒数
     s = String.format("%tM %<tS %<tL %<tN %<ts %<tQ", date);
     System.out.println(s);
/*
34 51 375 375000000 1386686091 1386686091375
*/
 


  }
}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值