String.format() 方法的用处
在工作中有时需要生成序列号或时间类型时小于10补零的方法:
下面举个例子:
// 我要生成一串序列号 E_00001 一直到 E_00999 public void console(Long[] ids){ String m = "E_"; for (int i = 1; i <= 999; i++) { /** * % 表示占位符开始 * 0 表示宽度不足时补 0 * 5 表示宽度为 5 位数 * d 表示数字 */ String format = String.format("%05d", i); System.out.println(m+format); } }
1、常用转换符
转换符 | 说明 | 示例 |
%s | 字符串类型 | "abcd1234" |
%c | 字符类型 | 'a' |
%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代表不同的日期与时间转换符) |
2、搭配转换符的标志
标志 | 说明 | 示例 | 结果 |
+ | 为正数或负数添加符号 | format("%+d",99) | +99 |
- | 左对齐 | format("%-5s","str") | |str | |
0 | 数字前补0 | format("%05d",99) | 00099 |
空格 | 在整数前添加指定数量空格 | format("% 5d",99) | | 99| |
, | 用,对数字进行格式化(三位一逗) | format("%,d",321321) | 321,321 |
( | 使用括号包含负数 | format("%(d",-99) | 99 |
# |
如果是浮点数,则包含小数点 如果是十六进制或八进制则添加0X或0 |
format("%#x",99) format("%#o",99) |
0x63 0143 |
< | 格式化前一个转换符所描述的参数 | format("%f和%<3.2f",99.45) | 99.450000和99.45 |
$ | 被格式化的参数索引 | format("%1$d,%2$s", 99,"abc") | 99,abc |
3、日期和时间
3.1、常见日期和时间组合的格式
转换符 | 说明 | 示例 |
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 |
3.2、 日期格式化转换符
转换符 | 说明 | 示例 |
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 |
3.3、 时间格式化转换符
转换符 | 说明 | 示例 |
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 |
只要你不觉得尴尬,那尴尬的就是别人