java格式化----java.util.Formatter
来源:互联网 发布:淘宝优惠券秒杀系统 编辑:程序博客网 时间:2024/05/22 12:03
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 标志
可选的属性,如果不选的话默认没有,主要有以下这些可选内容:
(四) width 宽度
宽度是可选属性,如果不写的话就默认宽度,如果写的话最好和flags一起配合使用,但是一定要注意宽度如果写了不能为0,否则会报错。
Eg: %-4d 宽度最小为四位并且左对齐
(五) .precision 小数位数
可选属性,这个和c语言中的做法很像,如果有浮点数的操作,则使用这个属性可以保证精度。
Eg:%.5f 保留这个浮点数小数点后五位数字
(六) conversion 格式类型
这是一个必选的参数,就是刚才我们在所有例子中都用到的参数,用这个来确定被格式内容的类型,如果类型不同会报错,先看一下所有类型的表:
(七)Formatter构造器
Formatter类的构造函数有很多,但是无非是几个参数的不同组合,总结起来参数有以下这些:
1. Formatter() 无参数,构造一个新 formatter。2. Formatter(Appendable a, Locale l) 构造一个带指定目标文件(new StringBuilder)和语言环境的新 formatter。3. Formatter(File file, String csn, Locale l) 构造一个带指定文件、字符集和语言环境的新 formatter。4. Formatter(String fileName, String csn, Locale l) 构造一个带指定文件名、字符集和语言环境的新 formatter。5. Formatter(OutputStream os, String csn, Locale l) 构造一个带指定输出流、字符集和语言环境的新 formatter。
上述这些构造器中,我们较为常用的是第一个和第二个或者根据特殊的用途,后几个也会被用到。
(八)format方法
在Formatter类中最常用也是只能用的方法,,就是format,这个函数有两种参数格式:
第一种是:format(Locale l, String format, Object… args)
使用指定的语言环境、格式字符串和参数,将一个格式化字符串写入此对象的目标文件中。
第二种是:format(String format, Object… args)
使用指定格式字符串和参数将一个格式化字符串写入此对象的目标文件中。
语言环境如果有需要的时候会用到,那么我们在这里就只讨论第二种。
直接来个例子:
StringBuilder sb = new StringBuilder();// Send all output to the Appendable object sbFormatter formatter = new Formatter();formatter.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d");formatter.format(Locale.FRANCE, "e = %+10.4f", Math.E);
不知道为什么,我的MyEclipse中这两句话总是报错,估计是我的ide的问题,这两句格式化应该是没问题的,如果你的ide也会报错可以把这两句的格式改成这样:
Object[] obj = {"a", "b", "c", "d"};formatter.format("%4$2s %3$2s %2$2s %1$2s", obj);
把第二个参数最直接的改成Object对象,绝对没问题,那么这两个的输出结果是:
d c b a
e = +27183
(九)总结
Formatter是广泛被用到的格式化方法,它能让一些东西变得更加有规范,很多超市小票,信息单,用这个方法来格式化就显得很不错,平时也应该多加练习这个方法。
- java格式化----java.util.Formatter
- Java 格式化类(java.util.Formatter)基本用法
- Java 格式化类(java.util.Formatter)基本用法
- Java 格式化类(java.util.Formatter)基本用法
- java.util.Formatter 详解
- java.util.Formatter
- java.util.Formatter 使用注意事项
- 我的Java开发学习之旅------>Java 格式化类(java.util.Formatter)基本用法
- 快速上手java.util.Formatter 类,(实例教程)
- java.util.Formatter类基本使用
- 快速上手java.util.Formatter 类,(实例教程)
- java中格式化输出大神Formatter简历
- java String 字符串格式化 formatter 文档
- jdt.core.formatter.CodeFormatter格式化java代码
- MyEclipse自定义Java文件格式化模板。 java formatter
- Formatter格式化
- Formatter(格式化)
- Formatter(格式化)
- SSM整合之配置文件
- Oracle 将一张表的数据更新到另一张表
- 大咖,我能转行做UX设计师吗?
- vue 混合 基础篇
- C#之MySql查询
- java格式化----java.util.Formatter
- Linux命令之查看cpu个数_核数_内存总数
- ubuntu 安装opencl失败笔记
- 单片机I/O口推挽与开漏输出详解(力荐)
- Centos7-Lvs+Keepalived架构
- java并发编程之ConcurrentHashMap
- Python学习笔记-打印与输入
- Linux之目录处理命令2-mkdir,cd,pwd,rmdir,cp
- Docker源码分析之容器日志处理与log-driver实现