Java 字符串 format() 方法
示例
返回格式化的字符串
String myStr = "Hello %s! One kilobyte is %,d bytes.";
String result = String.format(myStr, "World", 1024);
System.out.println(result);
注意: 您将在本页底部找到更多“自己尝试”示例。
定义和用法
The 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")将为大写。 以下字符可用于日期和时间格式化
|
语法
以下之一
public static String format(Locale locale, String format, Object... args)
public static String format(String format, Object... args)
参数值
参数 | 描述 |
---|---|
locale | 可选。用于确定某些格式的区域设置,例如用于小数点和分组分隔符的字符。 |
format | 必需。要返回的字符串,其中可以包含附加参数的占位符,指示如何格式化它们。 |
args | 可选。方法的任意数量的附加参数,它们的值可以被格式化并显示在返回的字符串中。 |
技术细节
返回值 | 使用指定的区域设置、格式和参数格式化的 String 值。 |
---|---|
抛出 | IllegalFormatException - 如果格式字符串包含无效的占位符或占位符与参数的数据类型不兼容。 |
Java 版本 | 1.5 |
更多示例
示例
使用所有组件的占位符
String result = String.format("%2$,3.2f %1$s", "meters", 1260.5052);
System.out.println(result);
这是占位符 %2$,3.2f
的每个部分的运作方式
2$
指示使用第二个参数的值,
指示应对数字进行分组 (通常以千位为单位)3
指示数据的表示形式应至少为 3 个字符长.2
指示小数点后应有两个数字f
指示数据正在表示为浮点数
示例
按不同的顺序使用参数
String result = String.format("%3$c %2$c %1$c", 'a', 'b', 'c');
System.out.println(result);
示例
格式化浮点数
double myNumber = 123456.78;
String result;
// Default
result = String.format("%f", myNumber);
System.out.println(result);
// Two decimal digits
result = String.format("%.2f", myNumber);
System.out.println(result);
// No decimal digits
result = String.format("%.0f", myNumber);
System.out.println(result);
// No decimal digits but keep the decimal point
result = String.format("%#.0f", myNumber);
System.out.println(result);
// Group digits
result = String.format("%,.2f", myNumber);
System.out.println(result);
// Scientific notation with two digits of precision
result = String.format("%.2e", myNumber);
System.out.println(result);
示例
从 Unix 时间戳格式化日期
long date = 1711638903488L; // Unix timestamp (number of milliseconds since January 1, 1970)
String result
// Time
result = String.format("%tl:%<tM %<tp", date);
System.out.println(result);
// Month and day
result = String.format("%tB %<te", date);
System.out.println(result);
// Full date representation
result = String.format("%tc", date);
System.out.println(result);
示例
从其 Unicode 代码点表示字符
String result;
// Represent characters from their unicode code points
result = String.format("%c%c%c%c%c", 72, 101, 108, 108, 111);
System.out.println(result);
// Force unicode characters to uppercase
result = String.format("%C%C%C%C%C", 72, 101, 108, 108, 111);
System.out.println(result);
❮ 字符串方法