Java之String.format()方法案例講解
String.format()作為文本處理工具,為我們提供強大而豐富的字符串格式化功能,這里根據查閱的資料做個學習筆記,整理成如下文章,供后續復習查閱。
一. format()方法的兩種重載形式:1. format(String format, Object ... args)
該方法使用指定的格式字符串和參數返回一個格式化的字符串,格式化后的新字符串使用本地默認的語言環境。
2. format(Local l, String format, Pbject ... args)
其中,參數l為格式化過程中要應用的語言環境。如果l為null,則不進行本地化。
二. 占位符:1.對整數進行格式化:%[index$][標識][最小寬度]轉換方式
格式化字符串由4部分組成,特殊的格式常以%index$開頭,index從1開始取值,表示將第index個參數拿進來進行格式化,[最小寬度]的含義也很好理解,就是最終該整數轉化的字符串最少包含多少位數字。剩下2個部分的含義:
標識:
’-’ 在最小寬度內左對齊,不可以與'用0填充'同時使用 ’#’ 只適用于8進制和16進制,8進制時在結果前面增加一個0,16進制時在結果前面增加0x ’+’ 結果總是包括一個符號(一般情況下只適用于10進制,若對象為BigInteger才可以用于8進制和16進制) ’ ’ 正值前加空格,負值前加負號(一般情況下只適用于10進制,若對象為BigInteger才可以用于8進制和16進制) ’0’ 結果將用零來填充 ’,’ 只適用于10進制,每3位數字之間用','分隔 ’(’ 若參數是負數,則結果中不添加負號而是用圓括號把數字括起來(同’+’具有同樣的限制)轉換方式:
d-十進制 o-八進制 x或X-十六進制
舉個例子,如下:
System.out.println(String.format('%1$-9d', 312356));System.out.println(String.format('%1$#9x', 312356));System.out.println(String.format('%1$-#9o', 312356));System.out.println(String.format('%1$+9d', 312356));System.out.println(String.format('%1$ 9d', 312356));System.out.println(String.format('%1$ 9d', -312356));System.out.println(String.format('%1$09d', 312356));System.out.println(String.format('%1$,9d', 312356));System.out.println(String.format('%1$(9d', 312356));輸出結果:
312356 0x4c42401142044 +312356 312356 -312356000312356 312,356 312356
2.對浮點數進行格式化:%[index$][標識][最少寬度][.精度]轉換方式
我們可以看到,浮點數的轉換多了一個'精度'選項,可以控制小數點后面的位數。
標識:
’-’ 在最小寬度內左對齊,不可以與'用0填充'同時使用 ’+’ 結果總是包括一個符號 ’ ’ 正值前加空格,負值前加負號 ’0’ 結果將用零來填充 ’,’ 每3位數字之間用','分隔(只適用于fgG的轉換) ’(’ 若參數是負數,則結果中不添加負號而是用圓括號把數字括起來(只適用于eEfgG的轉換)轉換方式:
’e’, ’E’ -- 結果被格式化為用計算機科學記數法表示的十進制數 ’f’ -- 結果被格式化為十進制普通表示方式 ’g’, ’G’ -- 根據具體情況,自動選擇用普通表示方式還是科學計數法方式 ’a’, ’A’ -- 結果被格式化為帶有效位數和指數的十六進制浮點數System.out.println(String.format('%1$-9.2f', 3123.32));System.out.println(String.format('%1$+9.2f', 3123.32));System.out.println(String.format('%1$ 9.2f', -3123.32));System.out.println(String.format('%1$ 9.2f', 3123.32));System.out.println(String.format('%1$09.2f', 3123.32));System.out.println(String.format('%1$,9.2f', 3123.32));System.out.println(String.format('%1$(9.2f', -3123.32));System.out.println(String.format('%1$9.2e', -3123.32));System.out.println(String.format('%1$9.2f', -3123.32));System.out.println(String.format('%1$9.2g', -3123.32));System.out.println(String.format('%1$9.2a', -3123.32));
輸出結果:
3123.32 +3123.32 -3123.32 3123.32003123.32 3,123.32(3123.32)-3.12e+03 -3123.32 -3.1e+03-0x1.86p113.對字符進行格式化:
對字符進行格式化是非常簡單的,c表示字符,標識中’-’表示左對齊,其他就沒什么了。
三. 對日期進行格式化:常用的日期格式轉換符如下表所示:
轉換符 說明 示例 %te 一個月中的某一天(1~31) 2 %tb 指定語言環境的月份簡稱 Feb(英文)、二月(中文) %tB 指定語言環境的月份全稱 February(英文)、二月(中文) %tA 指定語言環境的星期幾全稱 Monday(英文)、星期一(中文) %ta 指定語言環境的星期幾簡稱 Mon(英文)、星期一(中文) %tc 包括全部日期和時間信息 星期二 三月 25 13:37:22 CST 2008 %tY 4位年份 2019 %tj 一年中的第幾天(001~366) 085 %tm 月份 03 %td 一個月中的第幾天(01~31) 02 %ty 2位年份 19舉個例子,如下:
public class Eval { public static void main(String[] args) {Date date = new Date();String day = String.format('%te', date);System.out.println('今天是2019年8月:' + day + '號');String month = String.format('%tb', date);System.out.println('現在是2019年:' + month);String xingqi = String.format('%tA', date);System.out.println('今天是:' + xingqi);String year = String.format('%tY', date);System.out.println('現在是:' + year + '年'); }}
輸出結果:
1 今天是2019年8月:20號
2 現在是2019年:八月
3 今天是:星期二
4 現在是:2019年
常用的時間格式轉換符如下表所示:
轉換符 說明 示例 %tH 2位數字的24時制的小時(00~23) 14 %tI 2位數字的12時制的小時(01~12) 05 %tk 2位數字的24時制的小時(0~23) 5 %tl 2位數字的12時制的小時(1~12) 10 %tM 2位數字的分鐘(00~59) 05 %tS 2位數字的秒數(00~60) 12 %tL 3位數字的毫秒數(000~999) 920 %tN 9位數字的微秒數(000000000~999999999) 062000000 %tp 指定語言環境下上午或下午標記 下午(中文)、pm(英文) %tz 相對于GMT RFC 82格式的數字時區偏移量 +0800 %tZ 時區縮寫形式的字符串 CST %ts 1970-01-01 00:00:00至現在經過的秒數 1206345534 %tQ 1970-01-01 00:00:00至現在經過的毫秒數 12923409349034舉個例子,如下:
public class GetDate { public static void main(String[] args) {Date date = new Date();String hour = String.format('%tH', date);String minute = String.format('%tM', date);String second = String.format('%tS', date);System.out.println('現在是:' + hour + '點' + minute + '分' + second + '秒');System.out.println('##################################');String hour2 = String.format('%tI', date);String pm = String.format('%tp', date);System.out.println('現在是:' + pm + hour2 + '點' + minute + '分' + second + '秒'); }}
輸出結果:
1 現在是:15點06分37秒
2 ##################################
3 現在是:下午03點06分37秒
常見的日期和時間組合的格式如下表所示:
轉換符 說明 示例 %tF “年-月-日”格式(4位年份) 2019-08-20 %tD “年/月/日”格式(2位年份) 08/20/19 %tc 全部日期和時間信息 星期二 三月 25 15:20:00 CST 2019 %tr “時:分:秒 PM(AM)”格式(12時制) 03:22:06 下午 %tT “時:分:秒”格式(24時制) 15:23:50 %tR “時:分”格式(24時制) 15:25舉個例子,如下:
public class DateAndTime { public static void main(String[] args) {Date date = new Date();String time = String.format('%tc', date);String form = String.format('%tF', date);String form2 = String.format('%tD', date);String form3 = String.format('%tr', date);String form4 = String.format('%tT', date);String form5 = String.format('%tR', date);System.out.println('全部的時間信息是:' + time);System.out.println('年-月-日格式:' + form);System.out.println('年/月/日格式:' + form2);System.out.println('時:分:秒 PM(AM)格式:' + form3);System.out.println('時:分:秒格式:' + form4);System.out.println('時:分格式:' + form5); }}
輸出結果:
全部的時間信息是:星期二 八月 20 15:14:20 CST 2019年-月-日格式:2019-08-20年/月/日格式:08/20/19時:分:秒 PM(AM)格式:03:14:20 下午時:分:秒格式:15:14:20時:分格式:15:14結尾:
以上內容為format()方法的一些常用功能,也是本人在工作場景中經常用到的。整理歸納方便后續學習查閱,如果后面還有遇到相關方法的其他用法,后期再對該篇文章進行補充。
到此這篇關于Java之String.format()方法案例講解的文章就介紹到這了,更多相關Java之String.format()方法內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!
相關文章: