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