先简单介绍一下业务场景:公司新版本评审结束,需要按照一定规则拼接字符串(例如:20191215A001,...20191215A005);看着此需求,大家都想到了循环累加,但是后面如何拼接01,02这种字符而不是1,2...呢??答案肯定是数据格式化,于是乎注意力就集中在String类的格式化方法上了,所以下面正式进入本篇文章的主题。
针对上面的需求先简单解答:
String formatStr = String.format("%03d", 1);//输出结果:001
format()方法在java1.5版本开始新增,主要用于格式化字符串;
下面对format()方法做主要介绍:
1、参数占位符
转换符 | 说明 | 实例 |
%s | 字符串类型 | "xiyuan" |
%c | 字符类型 | 'x' |
%b | 布尔类型 | true |
%d | 整数类型(十进制) | 99 |
%x | 整数类型(十六进制) | FF |
%n | 换行符 | 无 |
%% | 百分号本身 | % |
代码示例:
public static void main(String[] args) { String str=null; str=String.format("Hi,%s", "溪源");
System.out.println(str); //Hi,溪源 str=String.format("Hi,%s:%s.%s", "溪源1","溪源2","溪源3"); System.out.println(str); //Hi, 溪源1:溪源2.溪源3 System.out.printf("字母a的大写是:%c %n", 'A');//字母a的大写是:A System.out.printf("3>7的结果是:%b %n", 3>7);//3>7的结果是:false System.out.printf("100的一半是:%d %n", 100/2);//100的一半是:50 System.out.printf("100的16进制数是:%x %n", 100);//100的16进制数是:64 }
2、划重点啦~:字符串与整数之间格式化
// 补齐空格并右对齐: String.format("%10s, world", "Hello"); // 输出 " Hello, world" String.format("%8d", 123); // 输出 " 123" // 补齐空格并左对齐: String.format("%-10s, world", "Hello"); // 输出 "Hello , world" String.format("%-8d", 123); // 输出 "123 " // 补齐 0 并对齐(仅对数字有效) String.format("%08d", 123); // 输出 "00000123" String.format("%-08d", 123); // 错误!不允许在右边补齐 0 // 输出最多N个字符 String.format("%.5s", "Hello, world"); // 输出 "Hello" String.format("%.5s...", "Hello, world"); // 输出 "Hello..." String.format("%10.5s...", "Hello, world"); // 输出 " Hello..." // 输出逗号分隔数字 String.format("%,d", 1234567); // 输出 "1,234,567"
3、日期格式化:
我们平时工作中最常使用的就是字符和日期之间的转化;
Y=年;m=月;d=日;H=时;M=分;S=秒;L=毫秒;A=星期几(名称);B=月份名称;
具体代码就不展示啦!