java.util.Formatter
在java中我们格式化一个字符串的方法有很多,最基本的就是不断地用+号来加出一个String,但是这样的操作有很多的问题,而且有的时候也非常的不方便,这个时候我们就要用到其他的工具。类似C的printf的格式方法,在java中也是有的,写成System.out.printf();还有另外一种方法就是使用Formatter类,这个类可以说是功能强大,能格式化任何信息。时间类可以参见我的另外一篇博文用SimpleDateFormat来格式化。
(一) 模型结构
%[argument_index$][flags][width][.precision]conversion
Eg:(“%4$2s %3$2s %2$2s %1$2s”, “a”, “b”, “c”, “d”) // -> ” d c b a”
相信只要是讲Formatter的就会一上来吧这句格式抛出来,再将一些玄学的东西,让新手彻底的看蒙,我发现说的越少效果才能越好,那我就什么都不说了,下面用五个点来吧上面的这句格式逐条分析。
(二) argument_index$ 参数序号
这个单词表示的是参数的序号,在这个表示参数的位数的数字表示之前需要加上一个$符号。比如,$2表示在参数列表中的第二个参数用来替换这个位置的内容。这个序号不是必须写的值,如果不写参数序号那么就默认为按照顺序的参数列表。
(三) flags 标志
可选的属性,如果不选的话默认没有,主要有以下这些可选内容:
标记 | 含义 | 示例 |
---|---|---|
- | 结果将是左对齐的。 | %-4d 宽度最小为四位并且左对齐 |
# | 如果是浮点数则结果加小数点,十六进制和八进制分别加0x和0 | %#x 最后输出结果变为16进制并且加0x |
+ | 正数数字会额外显示一个+号 | %+d 结果如果是证书则显示+号 |
一个空格 | 对于正值,结果中将包括一个前导空格 | % d 如果结果是正数则在前面加个空格 |
0 | 结果将用零来填充 | %010d 所有宽度不满10位的数字填充前导0 |
, |