先簡單介紹一下業務場景:公司新版本評審結束,需要按照一定規則拼接字符串(例如:20191215A001,...20191215A005);看着此需求,大家都想到了循環累加,但是後面如何拼接01,02這種字符而不是1,2...呢??答案肯定是數據格式化,於是乎注意力就集中在String類的格式化方法上了,所以下面正式進入本篇文章的主題。
針對上面的需求先簡單解答:
String formatStr = String.format("%03d", 1);//輸出結果:001
format()方法在java1.5版本開始新增,主要用於格式化字符串;
下面對format()方法做主要介紹:
1、參數佔位符
轉換符 | 說明 | 實例 |
%s | 字符串類型 | "xiyuan" |
%c | 字符類型 | 'x' |
%b | 布爾類型 | true |
%d | 整數類型(十進制) | 99 |
%x | 整數類型(十六進制) | FF |
%n | 換行符 | 無 |
%% | 百分號本身 | % |
代碼示例:
public static void main(String[] args) { String str=null; str=String.format("Hi,%s", "溪源");
System.out.println(str); //Hi,溪源 str=String.format("Hi,%s:%s.%s", "溪源1","溪源2","溪源3"); System.out.println(str); //Hi, 溪源1:溪源2.溪源3 System.out.printf("字母a的大寫是:%c %n", 'A');//字母a的大寫是:A System.out.printf("3>7的結果是:%b %n", 3>7);//3>7的結果是:false System.out.printf("100的一半是:%d %n", 100/2);//100的一半是:50 System.out.printf("100的16進制數是:%x %n", 100);//100的16進制數是:64 }
2、劃重點啦~:字符串與整數之間格式化
// 補齊空格並右對齊: String.format("%10s, world", "Hello"); // 輸出 " Hello, world" String.format("%8d", 123); // 輸出 " 123" // 補齊空格並左對齊: String.format("%-10s, world", "Hello"); // 輸出 "Hello , world" String.format("%-8d", 123); // 輸出 "123 " // 補齊 0 並對齊(僅對數字有效) String.format("%08d", 123); // 輸出 "00000123" String.format("%-08d", 123); // 錯誤!不允許在右邊補齊 0 // 輸出最多N個字符 String.format("%.5s", "Hello, world"); // 輸出 "Hello" String.format("%.5s...", "Hello, world"); // 輸出 "Hello..." String.format("%10.5s...", "Hello, world"); // 輸出 " Hello..." // 輸出逗號分隔數字 String.format("%,d", 1234567); // 輸出 "1,234,567"
3、日期格式化:
我們平時工作中最常使用的就是字符和日期之間的轉化;
Y=年;m=月;d=日;H=時;M=分;S=秒;L=毫秒;A=星期幾(名稱);B=月份名稱;
具體代碼就不展示啦!