Java String format() 方法
定义和用法
format()
方法使用区域设置、格式和附加参数返回一个格式化的字符串。
如果未向此方法传递区域设置,则使用 Locale.getDefault()
提供的区域设置。
附加参数中的数据会被格式化并写入格式字符串中的占位符,这些占位符由 %
符号标记。参数的格式化方式取决于 %
符号后面的字符序列。
占位符
占位符的形式为:
%[arg$][flags][width][.precision]conversion
注释:[方括号]中的组件是可选的。
以下是每个组件的解释:
arg$
- 可选。数字后跟 $
符号,指示要使用哪个附加参数,参数编号从 1 开始。这可以用 <
替换,表示应使用前一个占位符中的参数。
flags - 可选。以下字符中的任何一个的序列:
-
- 通过在右侧而不是左侧添加填充空格,使输出左对齐。#
- 根据转换方式显示格式化数据的另一种表示形式。+
- 使正数始终带有 "+
" 前缀。0
- 在数字左侧用零进行填充。,
- 将数字分组(例如,按千位分组),并在各组之间放置分隔符。这受区域设置的影响。(
- 将负数用括号括起来。
width - 可选。整数,指定输出应占用的最小字符数。如果需要,将在右侧添加空格以达到此数字,如果使用了 "-
" 标志,则在左侧添加空格。
.
precision 可选。点(.
)后跟整数,表示在格式化数据中显示多少位小数。
conversion - 必需。字符,指示应如何表示参数的数据。如果该字符是大写,则数据将尽可能以大写格式表示。可能的字符列表如下表所示。
转换列表
字符 | 转换 | 描述 |
---|---|---|
% |
百分号 | 在输出中显示一个字面的 "%" 字符。 |
n |
换行符 | 在输出中显示一个换行符。 |
b 或 B |
布尔值 |
将参数的布尔值显示为 "true" 或 "false"。 如果使用 "B",则显示为 "TRUE" 或 "FALSE"。 |
h 或 H |
无符号十六进制整数 |
将参数的二进制数据表示为无符号十六进制整数。 如果使用 "H",则数字 A 到 F 以大写显示。 注意:对于除正整数以外的任何数据,这并不表示其真实值。 |
s 或 S |
字符串 |
显示参数的默认字符串表示形式。 如果使用 "S",则字符串将尽可能转换为大写。 |
c 或 C |
Unicode 字符 |
显示参数的 Unicode 字符表示形式。对于整数,这是与数字对应的 Unicode 字符。 如果使用 "C",则字符将尽可能转换为大写。 |
d |
十进制整数 | 将整数表示为十进制整数。 |
o |
八进制整数 | 将整数表示为八进制整数。"#" 标志将在数字前加上 "0"。 |
x 或 X |
十六进制整数 |
将整数表示为十六进制整数。"#" 标志将在数字前加上 "0x"。 如果使用 "X",则数字 A 到 F 和字母 X 以大写显示。 |
e 或 E |
科学计数法 |
将浮点数表示为科学计数法。如果使用 "E",则表示的 "E" 字母将为大写。 "#" 标志将强制显示小数点,即使没有小数位数。 |
f |
浮点数 | 表示浮点数。"#" 标志将强制显示小数点,即使没有小数位数。 |
g 或 G |
通用数字 | 对于浮点数,显示 f 和 e 或 E 之间的最短表示。 |
a 或 A |
十六进制浮点数 | 用十六进制数字显示浮点数的内部表示。 |
t 或 T |
时间或日期 |
显示格式化的日期或时间。t 或 T 后面必须跟一个字符,指示应如何格式化日期或时间。 如果使用 "T",则日期的文本部分(如 "JANUARY")将为大写。 以下字符可用于日期和时间格式化:
|
实例
例子 1
返回一个格式化的字符串:
String myStr = "Hello %s! One kilobyte is %,d bytes."; String result = String.format(myStr, "World", 1024); System.out.println(result);
例子 2
使用一个包含所有组件的占位符:
String result = String.format("%2$,3.2f %1$s", "meters", 1260.5052); System.out.println(result);
这是占位符 %2$,3.2f
各部分的工作方式:
2$
表示使用第二个参数的值,
表示数字应分组(通常按千位)3
表示数据的表示形式应至少为 3 个字符长.2
表示小数点后应有两位数字f
表示数据被表示为浮点数
例子 3
以不同的顺序使用参数:
String result = String.format("%3$c %2$c %1$c", 'a', 'b', 'c'); System.out.println(result);
例子 4
格式化一个浮点数:
double myNumber = 123456.78; String result; // 默认 result = String.format("%f", myNumber); System.out.println(result); // 两位小数 result = String.format("%.2f", myNumber); System.out.println(result); // 无小数位数 result = String.format("%.0f", myNumber); System.out.println(result); // 无小数位数但保留小数点 result = String.format("%#.0f", myNumber); System.out.println(result); // 分组数字 result = String.format("%,.2f", myNumber); System.out.println(result); // 科学计数法,保留两位小数 result = String.format("%.2e", myNumber); System.out.println(result);
例子 5
用 Unix 时间戳格式化日期:
long date = 1711638903488L; // Unix 时间戳(自 1970 年 1 月 1 日以来的毫秒数) String result; // 时间 result = String.format("%tl:%<tM %<tp", date); System.out.println(result); // 月份和日期 result = String.format("%tB %<te", date); System.out.println(result); // 完整的日期表示 result = String.format("%tc", date); System.out.println(result);
例子 6
通过 Unicode 码点表示字符:
String result; // 通过 Unicode 码点表示字符 result = String.format("%c%c%c%c%c", 72, 101, 108, 108, 111); System.out.println(result); // 强制将 Unicode 字符转换为大写 result = String.format("%C%C%C%C%C", 72, 101, 108, 108, 111); System.out.println(result);
语法
其中之一:
public static String format(Locale locale, String format, Object... args) public static String format(String format, Object... args)
参数
参数 | 描述 |
---|---|
locale | 可选。用于确定某些格式设置(例如,用于小数点和分组分隔符的字符)的区域设置。 |
format | 必需。将被返回的字符串,其中可以包含占位符,用于指示如何格式化其他参数。 |
args | 可选。传递给方法的任意数量的附加参数,它们的值可以被格式化并显示在返回的字符串中。 |
技术细节
返回: | 使用指定的区域设置、格式和参数格式化后的 String 值。 |
---|---|
抛出: |
|
Java 版本: | 1.5 |