一、基本概念
Java中常用的字符串格式化方法是string.format方法。这个方法允许开发者将不同类型的数据格式化为一个字符串。string.format实际上是调用了一个叫做Formatter的类,对于格式化字符串的操作全部委托给Formatter来做。在Formatter类中使用格式化字符串语法指定占位符,然后将要输出的数据作为参数传递到format方法中。
占位符语法为:%[argument_index$][flags][width][.precision]conversion,在这里,%是必须的开头。同时,占位符包含5个部分:
- argument_index:表示在当前占位符所在参数列表中的位置,从1开始计数,可省略。
- flags:标记字符,用来控制输出的格式。
- width:用来指定输出的最小宽度。
- precision:用来指定精度,与类型相关。如果省略,则将其设置为6。
- conversion:用来指定输出的类型,包括十六进制、八进制、科学计数法等等。
二、使用示例
string.format可以用于很多不同的类型,包括整数、浮点数、日期、时间等。下面是一些常见的示例:
1、整数类型
int num = 123; System.out.println(String.format("%d", num));//输出:123 System.out.println(String.format("%4d", num));//输出: 123(宽度为4,右对齐) System.out.println(String.format("%04d", num));//输出:0123(宽度为4,左补0) System.out.println(String.format("%+-4d", num));//输出:+123(宽度为4,左对齐,带正号) System.out.println(String.format("%,d", num));//输出:123(千位分隔符)
2、浮点数类型
double pi = 3.1415926; System.out.println(String.format("%f", pi));//输出:3.141593 System.out.println(String.format("%.2f", pi));//输出:3.14(保留2位小数) System.out.println(String.format("%8.2f", pi));//输出: 3.14(宽度为8,右对齐) System.out.println(String.format("%+8.2f", pi));//输出: +3.14(宽度为8,右对齐,带正号) System.out.println(String.format("%08.2f", pi));//输出:0003.14(宽度为8,左补0)
3、日期和时间
Date now = new Date(); System.out.println(String.format("%tc", now));//输出:星期一 八月 16 20:09:36 CST 2021 System.out.println(String.format("%tr", now));//输出:08:09:36 下午 System.out.println(String.format("%tY-%tm-%td", now, now, now));//输出:2021-08-16 System.out.println(String.format("%tH:%tM:%tS", now, now, now));//输出:20:14:04
三、高级特性
在Formatter中还有一些高级功能,例如格式化输出集合类型、输出颜色等等。
1、格式化输出集合类型
Formatter提供了一些特殊的占位符来完成集合类型的格式化输出。下面是一些示例:
Listlist = Arrays.asList("apple", "banana", "cherry"); System.out.println(String.format("%s", list));//输出:[apple, banana, cherry] System.out.println(String.format("%#s", list));//输出:[apple,banana,cherry](去掉逗号、空格、加上#号) System.out.println(String.format("%-15s", list));//输出:[apple, banana, cherry](左对齐,宽度为15)
2、输出颜色
Formatter支持将输出的文本设置为不同的颜色,实现方法是在占位符中使用%[argument_index$]格式,并在flags中添加ANSI控制台颜色代码(Linux和Mac上有效)。下面是一些示例:
System.out.println(String.format("\033[31m%s\033[0m", "Hello, world!"));//输出红色文本 System.out.println(String.format("\033[46;37m%s\033[0m", "Hello, world!"));//输出蓝色背景+白色文本
四、总结
Java中的string.format方法是一个非常强大的字符串格式化工具,通过使用占位符来指定要格式化的类型、宽度、精度等等。在实际开发中,我们可以使用string.format方法来输出各种类型的数据,包括整数、浮点数、日期、时间、集合等等。同时,通过使用高级特性,我们可以将输出的文本进行格式化,并设置不同的颜色。