標籤:java string 格式化
JDK1.5中,String類新增了一個很有用的靜態方法String.format():
format(Locale l, String format, Object... args) 使用指定的語言環境、格式字串和參數返回一個格式化字串。
format(String format, Object... args) 使用指定的格式字串和參數返回一個格式化字串。format()方法中的字串格式參數有很多種轉換符選項,例如:日期、整數、浮點數等。
一、常規格式化
例子:
<span style="font-family:Microsoft YaHei;font-size:14px;">public static void main(String[] args) { String str=null; str=String.format("Hi,%s", "飛龍"); // 格式化字串 System.out.println(str); // 輸出字串變數str的內容 System.out.printf("字母a的大寫是:%c %n", 'A'); System.out.printf("3>7的結果是:%b %n", 3>7); System.out.printf("100的一半是:%d %n", 100/2); System.out.printf("100的16進位數是:%x %n", 100); System.out.printf("100的8進位數是:%o %n", 100); System.out.printf("50元的書打8.5折扣是:%f 元%n", 50*0.85); System.out.printf("上麵價格的16進位數是:%a %n", 50*0.85); System.out.printf("上麵價格的指數表示:%e %n", 50*0.85); System.out.printf("上麵價格的指數和浮點數結果的長度較短的是:%g %n", 50*0.85); System.out.printf("上面的折扣是%d%% %n", 85); System.out.printf("字母A的散列碼是:%h %n", 'A');}</span> 運行結果:
<span style="font-family:Microsoft YaHei;font-size:14px;">Hi,飛龍字母a的大寫是:A3>7的結果是:false100的一半是:50100的16進位數是:64100的8進位數是:14450元的書打8.5折扣是:42.500000 元上麵價格的16進位數是:0x1.54p5上麵價格的指數表示:4.250000e+01上麵價格的指數和浮點數結果的長度較短的是:42.5000上面的折扣是85%字母A的散列碼是:41</span>
這些字串格式參數不但可以靈活將其他資料類型轉換成字串,而且可以與各種標誌組合在一起,產生各種格式的字串
例子:
<span style="font-family:Microsoft YaHei;font-size:14px;">public static void main(String[] args) { String str=null; str=String.format("格式參數$的使用:%1$d,%2$s", 99,"abc"); System.out.println(str); System.out.printf("顯示正負數的符號:%+d與%d%n", 99,-99); System.out.printf("最牛的編號是:%03d%n", 7); System.out.printf("Tab鍵的效果是:% 8d%n", 7); System.out.printf("整數分組的效果是:%,d%n", 9989997); System.out.printf("一本書的價格是:%2.2f元%n", 49.8);}</span> 運行結果:
<span style="font-family:Microsoft YaHei;font-size:14px;">格式參數$的使用:99,abc顯示正負數的符號:+99與-99最牛的編號是:007Tab鍵的效果是: 7整數分組的效果是:9,989,997一本書的價格是:49.80元</span>
二、常見日期時間格式化
例子:
<span style="font-family:Microsoft YaHei;font-size:14px;">public static void main(String[] args) { Date date=new Date(); System.out.printf("全部日期和時間資訊:%tc%n",date); System.out.printf("年-月-日格式:%tF%n",date); System.out.printf("月/日/年格式:%tD%n",date); System.out.printf("HH:MM:SS PM格式(12時制):%tr%n",date); System.out.printf("HH:MM:SS格式(24時制):%tT%n",date); System.out.printf("HH:MM格式(24時制):%tR",date);}</span> 運行結果:
<span style="font-family:Microsoft YaHei;font-size:14px;">全部日期和時間資訊:星期日十月28 13:53:24 CST 2007年-月-日格式:2007-10-28月/日/年格式:10/28/07HH:MM:SS PM格式(12時制):01:53:24 下午HH:MM:SS格式(24時制):13:53:24HH:MM格式(24時制):13:53</span>
三、格式化日期文字
例子:
<span style="font-family:Microsoft YaHei;font-size:14px;">public static void main(String[] args) { Date date=new Date(); String str=String.format(Locale.US,"英文月份簡稱:%tb",date); System.out.println(str); System.out.printf("本地月份簡稱:%tb%n",date); str=String.format(Locale.US,"英文月份全稱:%tB",date); System.out.println(str); System.out.printf("本地月份全稱:%tB%n",date); str=String.format(Locale.US,"英文星期的簡稱:%ta",date); System.out.println(str); System.out.printf("本地星期的簡稱:%tA%n",date); System.out.printf("年的前兩位元字(不足兩位前面補0):%tC%n",date); System.out.printf("年的後兩位元字(不足兩位前面補0):%ty%n",date); System.out.printf("一年中的天數(即年的第幾天):%tj%n",date); System.out.printf("兩位元字的月份(不足兩位前面補0):%tm%n",date); System.out.printf("兩位元字的日(不足兩位前面補0):%td%n",date); System.out.printf("月份的日(前面不補0):%te",date);}</span> 運行結果:
<span style="font-family:Microsoft YaHei;font-size:14px;">英文月份簡稱:Oct本地月份簡稱:十月英文月份全稱:October本地月份全稱:十月英文星期的簡稱:Sun本地星期的簡稱:星期日年的前兩位元字(不足兩位前面補0):20年的後兩位元字(不足兩位前面補0):07一年中的天數(即年的第幾天):301兩位元字的月份(不足兩位前面補0):10兩位元字的日(不足兩位前面補0):28月份的日(前面不補0):28</span>
四、格式化時間字串
例子:
<span style="font-family:Microsoft YaHei;font-size:14px;">public static void main(String[] args) { Date date=new Date(); // 建立日期對象 System.out.printf("2位元字24時制的小時(不足2位前面補0):%tH%n",date); System.out.printf("2位元字12時制的小時(不足2位前面補0):%tI%n",date); System.out.printf("2位元字24時制的小時(前面不補0):%tk%n",date); System.out.printf("2位元字12時制的小時(前面不補0):%tl%n",date); System.out.printf("2位元字的分鐘(不足2位前面補0):%tM%n",date); System.out.printf("2位元字的秒(不足2位前面補0):%tS%n",date); System.out.printf("3位元字的毫秒(不足3位前面補0):%tL%n",date); System.out.printf("9位元字的毫秒數(不足9位前面補0):%tN%n",date); String str=String.format(Locale.US,"小寫字母的上午或下午標記(英):%tp",date); System.out.println(str); // 輸出字串變數str的內容 System.out.printf ("小寫字母的上午或下午標記(中):%tp%n",date); System.out.printf("相對於GMT的RFC822時區的位移量:%tz%n",date); System.out.printf("時區縮寫字串:%tZ%n",date); System.out.printf("1970-1-1 00:00:00 到現在所經過的秒數:%ts%n",date); System.out.printf("1970-1-1 00:00:00 到現在所經過的毫秒數:%tQ%n",date);}</span> 運行結果:
<span style="font-family:Microsoft YaHei;font-size:14px;">2位元字24時制的小時(不足2位前面補0):152位元字12時制的小時(不足2位前面補0):032位元字24時制的小時(前面不補0):152位元字12時制的小時(前面不補0):32位元字的分鐘(不足2位前面補0):242位元字的秒(不足2位前面補0):563位元字的毫秒(不足3位前面補0):8289位元字的毫秒數(不足9位前面補0):828000000小寫字母的上午或下午標記(英):pm小寫字母的上午或下午標記(中):下午相對於GMT的RFC822時區的位移量:+0800時區縮寫字串:CST1970-1-1 00:00:00到現在所經過的秒數:11935562961970-1-1 00:00:00到現在所經過的毫秒數:1193556296828</span>
Java String字串的格式化