String.format()

String.format

文本处理工具,为我们提供了强大的字符串转化功能。

api:
// 使用当前本地区域对象(Locale.getDefault())格式化字符串
String String.format(String fmt, Object... args);

// 自定义本地区域对象格式化字符串
String String.format(Locale locale, String fmt, Object... args);
字符、字符串的格式化:

格式:%【index$】【标识】【最小宽度】

常用标识:

  • -标识最小宽度内左对齐,右边用空格补上

可用转化符:

  s,字符串类型。
  c,字符类型,实参必须为char或int、short等可转换为char类型的数据类型,否则抛IllegalFormatConversionException异常。

  b,布尔类型,只要实参为非false的布尔类型,均格式化为字符串true,否则为字符串false。

  n,平台独立的换行符(与通过 System.getProperty("line.separator") 是一样的)

实例:

String raw = "hello";
//用于设置格式化后的字符串最小长度,若使用 [最小宽度] 而无设置 [标识] ,那么当字符串长度小于最小宽度时,则以左边补空格的方式凑够最小宽度。
String str = String.format("%1$7s", raw);
// 简化,
//String str = String.format("%7s", raw);
//输出:将"hello"格式化为"  hello"

String raw = "hello";
//此时设置了标识-  标识最小宽度内左对齐,右边用空格补上
String str = String.format("%1$-7s", raw);
// 简化
//String str = String.format("%-7s", raw);
//输出:将"hello"格式化为"hello  "

//1$标识占位符对应的索引
String str = String.format("%1$s,%2$s", raw,"baby");
//输出:hello,baby
String str = String.format("%1$s,%1$s", raw,"baby");
//输出:hello,hello
整数的格式化:

格式:%【index$】【标识】*【最小宽度】转换符 (布尔b,十进制整数d,十六进制整数x,)

常用标识:

-,在最小宽度内左对齐,不可以与0标识一起使用。
0,若内容长度不足最小宽度,则在左边用0来填充。
#,对8进制和16进制,8进制前添加一个0,16进制前添加0x。
+,结果总包含一个+或-号。
空格,正数前加空格,负数前加-号。
,,只用与十进制,每3位数字间用,分隔。
(,若结果为负数,则用括号括住,且不显示符号。

可用转化符:

b,布尔类型,只要实参为非false的布尔类型,均格式化为字符串true,否则为字符串false。
d,整数类型(十进制)。
x,整数类型(十六进制)。
o,整数类型(八进制)
n,平台独立的换行符, 也可通过System.getProperty("line.separator")获取

实例:

int num = 1;
String str = String.format("%04d", num)
//结果:将1显示为0001
int num = -1000;
String str = String.format("%(,d", num)
//结果:将-1000显示为(1,000)
浮点数格式化:

格式:%【index$】【标识】*【最小宽度】【.精度】

可用标识:

-,在最小宽度内左对齐,不可以与0标识一起使用。
0,若内容长度不足最小宽度,则在左边用0来填充。
#,对8进制和16进制,8进制前添加一个0,16进制前添加0x。
+,结果总包含一个+或-号。
空格,正数前加空格,负数前加-号。
,,只用与十进制,每3位数字间用,分隔。
(,若结果为负数,则用括号括住,且不显示符号。

可用转化符:

b,布尔类型,只要实参为非false的布尔类型,均格式化为字符串true,否则为字符串false。
n,平台独立的换行符, 也可通过System.getProperty("line.separator")获取。
f,浮点数型(十进制)。显示9位有效数字,且会进行四舍五入。如99.99。
a,浮点数型(十六进制)。
e,指数类型。如9.38e+5。
g,浮点数型(比%f,%a长度短些,显示6位有效数字,且会进行四舍五入)

实例:

double num = 123.4567899;
System.out.print(String.format("%f %n", num)); // 123.456790 
System.out.print(String.format("%a %n", num)); // 0x1.edd3c0bb46929p6 
System.out.print(String.format("%g %n", num)); // 123.457
日期格式化:

格式:%【index$】t转化符

可用转换符:

//日期
c,星期六 十月 27 14:21:20 CST 2007
F,2007-10-27
D,10/27/07
r,02:25:51 下午
T,14:28:16
R,14:28
b, 月份简称
B, 月份全称
a, 星期简称
A, 星期全称
C, 年前两位(不足两位补零)
y, 年后两位(不足两位补零)
j, 当年的第几天
m, 月份(不足两位补零)
d, 日期(不足两位补零)
e, 日期(不足两位不补零)

//时间
H, 24小时制的小时(不足两位补零)
k, 24小时制的小时(不足两位不补零)
I, 12小时制的小时(不足两位补零)
i, 12小时制的小时(不足两位不补零)
M, 分钟(不足两位补零)
S, 秒(不足两位补零)
L, 毫秒(不足三位补零)
N, 毫秒(不足9位补零)
p, 小写字母的上午或下午标记,如中文为“下午”,英文为pm
z, 相对于GMT的时区偏移量,如+0800
Z, 时区缩写,如CST
s, 自1970-1-1 00:00:00起经过的秒数
Q, 自1970-1-1 00:00:00起经过的豪秒
特殊转换符:

<,用于格式化前一个转换符所描述的参数。

int num = 1000;
String str = String.format("%d %<,d", num);
// 结果"1000 1,000

转自:http://www.cnblogs.com/fsjohnhuang/p/4094777.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值