String.format(String format, Object... args)
可建立格式化的字串(formatted string)。
所謂的格式化的字串是指由格式化字串(format string)與參數(args)組成的字串,也就是String.format(String format, Object... args)
的第一個參數format
及後接的多個參數args
。
格式化字串(format string)是由固定字串搭配多個格式化符號(format specifiers)組成的字串,請見下面範例。
String format = "Your name is %s"; // 格式化字串
String arg = "Bill"; // 格式化字串的參數
String yourNameIs = String.format(format, arg); // 使用格式化字串搭配參數組成格式化的字串
System.out.print(yourNameIs); // Your name is Bill
變數format
為格式化字串,由固定字串"Your name is"
搭配格式化符號%s
組成。
變數arg
為格式化字串參數,在格式化時會替代格式化符號%s
;
變數yourNameIs
即為格式化的字串。
上面的程式可簡化為以下。
String yourNameIs = String.format("Your name is %s", "Bill");
System.out.print(yourNameIs); // Your name is Bill
如果只是要在console印出可直接用System.out.printf(String format, Object... args)
。
System.out.printf("Your name is %s", "Bill"); // Your name is Bill
傳入多個格式字串參數
System.out.printf("An %s a day, keeps the %s away.%n", "apple", "doctor"); // An apple a day, keeps the doctor away.
System.out.printf("你媽超%s,你全家都%s!%n", "胖", "肥宅"); // 你媽超胖,你全家都肥宅!
%s
僅表示字串格式化符,其餘的格式化符號請參考java.util.Formatter
的API文件,分為以下幾類。
- General(通用):可套用任意的參數形式。
- Character(字符):可套用表示Unicode字符的型別。
- Numeric(數值)
- Integral(整數):可套用Java整數型別
- Floating Point(浮點數):可套用Java浮點數型別
- Date/Time(日期時間):可套用在可轉換為日期或時間型態的型別
- Percent(百分比):代表
%
實字。 - Line Separator(斷行):代表斷行。
以下是一些基本範例,每一行後都使用%n
斷行。
System.out.printf("%b%n", 0); // true (布林)
System.out.printf("%b%n", 1); // false (布林)
System.out.printf("%b%n", null); // false (布林)
System.out.printf("%h%n", 15); // f (Hex表示)
System.out.printf("%s%n", "ABC"); // ABC (字串)
System.out.printf("%c%n", 65); // A (字元)
System.out.printf("%c%n", 0x597d); // 好 (字元)
System.out.printf("%d%n", 123); // 123 (整數)
System.out.printf("%d%n", -123); // -123 (整數)
System.out.printf("%o%n", 15); // 17 (Octal表示)
System.out.printf("%x%n", 15); // f (Hex表示)
System.out.printf("%e%n", 123.456); // 1.234560e+02 (科學符號表示)
System.out.printf("%f%n", 123.456); // 123.456000 (浮點數)
System.out.printf("%g%n", 123.456); // 123.456 (科學符號表示或普通數值表示,採用長度較短的方案)
System.out.printf("%a%n", 123.456); // 0x1.edd2f1a9fbe77p6 (Hex表示浮點數)
System.out.printf("%d%%%n", 123); // 123% (%實字)
下面則是使用數字格式符號的簡單範例,請參考Number Localization Algorithm。
System.out.printf("%+d%n", 123); // +123 (整數加正號)
System.out.printf("% 5d%n", 123); // __123(整數,輸出長度為5,不足部分左邊補空白)
System.out.printf("%05d%n", 123); // 00123 (整數,輸出長度為5,不足部分左邊補0)
System.out.printf("%-5d%n", 123); // 123___ (整數,輸出長度為5,靠左對齊)
System.out.printf("%,d%n", 1234); // 1,234 (整數,千份位符號)
System.out.printf("%(d%n", -123); // (123) (整數,括弧表示負數)
System.out.printf("This %1$s a %2$s%n", "is", "book"); // This is a book (字串,使用參數索引)
上面數值格式使用的符號如下。
%+ |
加正號 |
%
|
左邊補空白 |
%0
|
左邊補0 |
%,
|
分位符號 |
%(
|
負值以括號表示。 |
如果覺得文章有幫助的話還幫忙點個Google廣告,感恩。
沒有留言:
張貼留言