在本文中,我们将介绍 Java Formatter.format
方法。 java.util.Formatter
类用作 printf 样式格式字符串的解释器。 Formatter
可以执行布局对齐、对齐、数字、字符串和日期/时间数据的常用格式。 Formatter
产生特定于语言环境的输出。
要格式化数据,Formatter
有如下 format()
方法。
Formatter format(String format, Object... args)
1. 使用指定的格式和参数将格式化字符串写入此对象的目的地。默认语言环境与在构造Formatter期间使用的语言环境相同。
2. 返回此Formatter。
3. 如果格式字符串包含非法语法、不兼容的格式说明符或参数不足,则会出现 IllegalFormatException
。
4. 如果参数超过要求,额外的参数将被忽略。
b.
Formatter format(Locale l, String format, Object... args)
使用指定的语言环境、格式和参数将格式化字符串写入此对象的目的地。
在这种方法中,我们可以指定语言环境来格式化字符串,其余与第一种方法相同。
现在在这里我们将讨论初始化 Formatter
、格式语法和使用 format()
方法的示例。
找到 Formatter
类的一些构造函数。
1.
Formatter()
为此 JVM 实例构造一个具有默认语言环境和默认字符集的新 Formatter
。格式化输出的目的地是 StringBuilder
。
2.
Formatter(Locale l)
为此 JVM 实例构造一个具有指定语言环境和默认字符集的新 Formatter
。格式化输出的目的地是 StringBuilder
。
3.
Formatter(File file)
用指定的文件构造一个新的Formatter。它为此 JVM 实例使用默认语言环境和默认字符集。此Formatter的目标是指定文件。
4.
Formatter(File file, Charset charset, Locale l)
使用指定的文件、字符集和语言环境构造一个新的Formatter。此Formatter的目标是指定的文件。
查找 Formatter
类使用的格式语法。
a. 适用于一般、字符和数字类型。
%[argument_index$][flags][width][.precision]conversion
argument_index:参数在参数列表中的位置。例如,第一个参数被“1$”引用,第二个参数被“2$”引用等等。它是可选的。
flags:修改输出格式的字符集。它是可选的。
width:正十进制整数,指示要写入输出的最小字符数。它是可选的。
precision:用于限制字符数的正十进制整数。它是可选的。
conversion:指示参数应如何格式化的字符。这是必需的。
b.:日期和时间。
%[argument_index$][flags][width]conversion
c. 与参数不对应的格式说明符。
%[flags][width]conversion
现在找到例子。
转换分为常规、字符、数字、日期/时间、百分比和行分隔符等类别。
找到一些转换。
%s 用于字符串数据。
%d 对于整数。
%f 用于浮点数。
%c 用于 Unicode 字符。
%t 日期和时间的前缀。
日期/时间转换后缀是 m 代表月份,e 代表月份中的某天,y 代表年份,H 代表 24 小时制中的一天中的小时,M 代表分钟,S 代表秒。
日期转换可以用作 %tm, %te, %ty, %tH, %tY, %tS 。
例子:
1.
Formatter formatter = new Formatter(Locale.US);
String name = "Krishn";
int age = 30;
formatter.format("User name is %s and age is %d", name, age);
System.out.println(formatter);
输出
User name is Krishn and age is 30
2.
Formatter formatter = new Formatter(Locale.US);
Calendar c = new GregorianCalendar();
formatter.format("Birth date: %tm %te,%tY", c, c, c);
System.out.println(formatter);
输出
Birth date: 09 21,2021
参数索引是一个十进制整数,表示参数在参数列表中的位置。 1$ 引用的参数索引用于第一个参数,2$ 用于第二个参数,依此类推。
例子:
1.
Formatter formatter = new Formatter(Locale.US);
Formatter f = formatter.format("Numbers: %3$d %1$d %2$d", 10, 20, 30);
System.out.println(f);
输出
Numbers: 30 10 20
2.
Formatter formatter = new Formatter(Locale.US);
Calendar c = new GregorianCalendar();
Formatter f = formatter.format("Birth date: %1$tm %1$te,%1$tY %1$tH:%1$tM:%1$tS", c);
System.out.println(f);
输出
Birth date: 09 21,2021 09:32:26
'-' 结果将左对齐。
'#' 结果应使用与转换相关的替代形式。
'+' 结果将始终包含一个符号。
' ' 结果将包括正值的前导空格。
'0' 结果将被零填充
',' 结果将包括特定于语言环境的分组分隔符。
'(' 结果将用括号括起来负数。
例子:
1.
Formatter formatter = new Formatter();
formatter.format(Locale.GERMAN, "e = %+f", Math.E);
System.out.println(formatter);
输出
e = +2,718282
2.
Formatter formatter = new Formatter();
formatter.format(Locale.ENGLISH, "N = %(,d", -123456);
System.out.println(formatter);
输出
N = (123,456)
宽度是要写入输出的最小字符数。
例子:
Formatter formatter = new Formatter();
String str = "AB";
formatter.format(Locale.GERMAN, "|%5s|", str);
System.out.println(formatter);
输出
| AB|
我们可以看到指定的宽度是 5。这意味着输出的最小字符数是 5。由于 str 中只有两个字符,所以其余的都用空格填充。
对于像 %s 这样的一般转换,精度是要写入输出的最大字符数。
对于像 %f 这样的浮点转换,精度是小数点后的位数。
对于字符、整数和日期/时间转换,精度不适用。
例子:
1.
Formatter formatter = new Formatter();
String str = "ABCDE";
formatter.format(Locale.GERMAN, "Data: %.3s", str);
System.out.println(formatter);
输出
Data: ABC
对于 %s,精度是要写入输出的最大字符数。在上面的例子中,精度为 3,所以输出只有3个字符。
2.
Formatter formatter = new Formatter();
formatter.format(Locale.FRANCE, "%2$s = %1$+5.2f", Math.E, "Formatted E");
System.out.println(formatter);
输出
Formatted E = +2,72
在 "%1$+5.2f" 中,参数索引为 1$,标志为 +,宽度为 5,精度为 .2,转换为 f。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://www.concretepage.com/java/java-formatter-format
内容来源于网络,如有侵权,请联系作者删除!