使用Formatter格式化数据需要两种类型的输入:
- 格式字符串
- 值列表
格式字符串定义如何格式化值列表。
格式字符串可以包含静态文本和嵌入格式说明符。静态文本在格式字符串中作为结果输出。
格式说明符用于两个目的。
- 它用作格式字符串中格式化数据的占位符
- 它指定如何格式化数据
格式说明符
假设您要打印包含某人的出生日期的文本。以下是此类文本的示例:
January 16, 1970 is Mike"s birth day. Let"s go and celebrate.January 11, 1971 is John"s birth day. Let"s go and celebrate.January 16, 1972 is Jane"s birth day. Let"s go and celebrate.January 16, 1973 is Kite"s birth day. Let"s go and celebrate.
上述文本包含固定文本和格式化文本。 为了重用格式和填写人名称和生日我们可以写一个模板如下:
, is "s birth day. Let"s go and celebrate.
生日日期用尖括号括起来,以及人的姓名。我们可以称它为占位符。 后来我们可以为占位符提供真正的价值。
要在Formatter类中使用模板,我们将占位符转换为格式说明符。模板变为格式字符串。
格式说明符以百分号%开头。
我们可以重写可以与Formatter类一起使用的模板字符串,如下所示。
%1$tB %1$td, %1$tY is %2$s"s birth day. Let"s go and celebrate.
在此格式字符串中,%1 $ tB ,%1 $ td %1 $ tY 和%2 $ s 是格式说明符。
格式字符串中的其余文本,例如“生日,让我们去庆祝",是固定文本。
例子
以下代码显示如何使用上述格式字符串打印格式化文本。
在代码中,我们创建了一个LocalDate来存储Mike的生日。
本地日期值和“Mike"成为格式字符串的输入值。
import java.time.LocalDate;import java.time.Month;public class Main { public static void main(String[] args) { LocalDate dob = LocalDate.of(1971, Month.MAY, 16); System.out.printf( "%1$tB %1$td, %1$tY is %2$s"s birth day. Let"s go and celebrate.