Java String format() Method
示例
返回格式化字符串
String myStr = "Hello %s! One kilobyte is %,d bytes.";
String result = String.format(myStr, "World", 1024);
System.out.println(result);
注意: 你可以在页面底部找到更多“动手试试”的示例。
定义和用法
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);
❮ String Methods