1. 程式人生 > >java的String.format()函式

java的String.format()函式

String類的format()方法用於建立格式化的字串以及連線多個字串物件。熟悉C語言的同學應該記得C語言的sprintf()方法,兩者有類似之處。format()方法有兩種過載形式。

format(String format, Object... args) 新字串使用本地語言環境,制定字串格式和引數生成格式化的新字串。

format(Locale locale, String format, Object... args) 使用指定的語言環境,制定字串格式和引數生成格式化的字串。

顯示不同轉換符實現不同資料型別到字串的轉換,如圖所示

轉  換  符

說    明 

示    例

%s

字串型別

"mingrisoft"

%c

字元型別

'm'

%b

布林型別

true

%d

整數型別(十進位制)

99

%x

整數型別(十六進位制)

FF

%o

整數型別(八進位制)

77

%f

浮點型別

99.99

%a

十六進位制浮點型別

FF.35AE

%e

指數型別

9.38e+5

%g

通用浮點型別(f和e型別中較短的)

%h

雜湊碼

%%

百分比型別

%n

換行符

%tx

日期與時間型別(x代表不同的日期與時間轉換符

測試用例
  1. publicstaticvoid main(String[] args) {  
  2.     String str=null;  
  3.     str=String.format("Hi,%s""王力");  
  4.     System.out.println(str);  
  5.     str=String.format("Hi,%s:%s.%s""王南","王力","王張");            
  6.     System.out.println(str);                           
  7.     System.out.printf("字母a的大寫是:%c %n"
    'A');  
  8.     System.out.printf("3>7的結果是:%b %n"3>7);  
  9.     System.out.printf("100的一半是:%d %n"100/2);  
  10.     System.out.printf("100的16進位制數是:%x %n"100);  
  11.     System.out.printf("100的8進位制數是:%o %n"100);  
  12.     System.out.printf("50元的書打8.5折扣是:%f 元%n"50*0.85);  
  13.     System.out.printf("上面價格的16進位制數是:%a %n"50*0.85);  
  14.     System.out.printf("上面價格的指數表示:%e %n"50*0.85);  
  15.     System.out.printf("上面價格的指數和浮點數結果的長度較短的是:%g %n"50*0.85);  
  16.     System.out.printf("上面的折扣是%d%% %n"85);  
  17.     System.out.printf("字母A的雜湊碼是:%h %n"'A');  
  18. }  
輸出結果
  1. Hi,王力  
  2. Hi,王南:王力.王張  
  3. 字母a的大寫是:A   
  4. 3>7的結果是:false   
  5. 100的一半是:50   
  6. 100的16進位制數是:64   
  7. 100的8進位制數是:144   
  8. 50元的書打8.5折扣是:42.500000 元  
  9. 上面價格的16進位制數是:0x1.54p5   
  10. 上面價格的指數表示:4.250000e+01   
  11. 上面價格的指數和浮點數結果的長度較短的是:42.5000   
  12. 上面的折扣是85%   
  13. 字母A的雜湊碼是:41   
搭配轉換符的標誌,如圖所示。

標    志

說    明

示    例

結    果

+

為正數或者負數新增符號

("%+d",15)

+15

左對齊

("%-5d",15)

|15   |

0

數字前面補0

("%04d", 99)

0099

空格

在整數之前新增指定數量的空格

("% 4d", 99)

|  99|

,

以“,”對數字分組

("%,f", 9999.99)

9,999.990000

(

使用括號包含負數

("%(f", -99.99)

(99.990000)

#

如果是浮點數則包含小數點,如果是16進位制或8進位制則新增0x或0

("%#x", 99)

("%#o", 99)

0x63

0143

格式化前一個轉換符所描述的引數

("%f和%<3.2f", 99.45)

99.450000和99.45

$

被格式化的引數索引

("%1$d,%2$s", 99,"abc")

99,abc

測試用例
  1. publicstaticvoid main(String[] args) {  
  2.     String str=null;  
  3.     //$使用
  4.     str=String.format("格式引數$的使用:%1$d,%2$s"99,"abc");             
  5.     System.out.println(str);                       
  6.     //+使用
  7.     System.out.printf("顯示正負數的符號:%+d與%d%n"99,-99);  
  8.     //補O使用
  9.     System.out.printf("最牛的編號是:%03d%n"7);  
  10.     //空格使用
  11.     System.out.printf("Tab鍵的效果是:% 8d%n"7);  
  12.     //.使用
  13.     System.out.printf("整數分組的效果是:%,d%n"9989997);  
  14.     //空格和小數點後面個數
  15.     System.out.printf("一本書的價格是:% 50.5f元%n"49.8);  
  16. }  

輸出結果
  1. 格式引數$的使用:99,abc  
  2. 顯示正負數的符號:+99與-99  
  3. 最牛的編號是:007  
  4. Tab鍵的效果是:       7  
  5. 整數分組的效果是:9,989,997  
  6. 一本書的價格是:                                          49.80000元  

日期和事件字串格式化

在程式介面中經常需要顯示時間和日期,但是其顯示的 格式經常不盡人意,需要編寫大量的程式碼經過各種演算法才得到理想的日期與時間格式。字串格式中還有%tx轉換符沒有詳細介紹,它是專門用來格式化日期和時 間的。%tx轉換符中的x代表另外的處理日期和時間格式的轉換符,它們的組合能夠將日期和時間格式化成多種格式。

常見日期和時間組合的格式,如圖所示。

轉  換  符

說    明

示    例

c

包括全部日期和時間資訊

星期六 十月 27 14:21:20 CST 2007

F

“年-月-日”格式

2007-10-27

D

“月/日/年”格式

10/27/07

r

“HH:MM:SS PM”格式(12時制)

02:25:51 下午

T

“HH:MM:SS”格式(24時制)

14:28:16

R

“HH:MM”格式(24時制)

14:28

測試用例
  1. publicstaticvoid main(String[] args) {  
  2.     Date date=new Date();                                  
  3.     //c的使用
  4.     System.out.printf("全部日期和時間資訊:%tc%n",date);          
  5.     //f的使用
  6.     System.out.printf("年-月-日格式:%tF%n",date);  
  7.     //d的使用
  8.     System.out.printf("月/日/年格式:%tD%n",date);  
  9.     //r的使用
  10.     System.out.printf("HH:MM:SS PM格式(12時制):%tr%n",date);  
  11.     //t的使用
  12.     System.out.printf("HH:MM:SS格式(24時制):%tT%n",date);  
  13.     //R的使用
  14.     System.out.printf("HH:MM格式(24時制):%tR",date);  
  15. }  

輸出結果
  1. 全部日期和時間資訊:星期一 九月 10 10:43:36 CST 2012  
  2. 年-月-日格式:2012-09-10  
  3. 月/日/年格式:09/10/12  
  4. HH:MM:SS PM格式(12時制):10:43:36 上午  
  5. HH:MM:SS格式(24時制):10:43:36  
  6. HH:MM格式(24時制):10:43  
定義日期格式的轉換符可以使日期通過指定的轉換符生成新字串。這些日期轉換符如圖所示。
  1. publicstaticvoid main(String[] args) {  
  2.     Date date=new Date();                                      
  3.     //b的使用,月份簡稱
  4.     String str=String.format(Locale.US,"英文月份簡稱:%tb",date);       
  5.     System.out.println(str);                                                                              
  6.     System.out.printf("本地月份簡稱:%tb%n",date);  
  7.     //B的使用,月份全稱
  8.     str=String.format(Locale.US,"英文月份全稱:%tB",date);  
  9.     System.out.println(str);  
  10.     System.out.printf("本地月份全稱:%tB%n",date);  
  11.     //a的使用,星期簡稱
  12.     str=String.format(Locale.US,"英文星期的簡稱:%ta",date);  
  13.     System.out.println(str);  
  14.     //A的使用,星期全稱
  15.     System.out.printf("本地星期的簡稱:%tA%n",date);  
  16.     //C的使用,年前兩位
  17.     System.out.printf("年的前兩位數字(不足兩位前面補0):%tC%n",date);  
  18.     //y的使用,年後兩位
  19.     System.out.printf("年的後兩位數字(不足兩位前面補0):%ty%n",date);  
  20.     //j的使用,一年的天數
  21.     System.out.printf("一年中的天數(即年的第幾天):%tj%n",date);  
  22.     //m的使用,月份
  23.     System.out.printf("兩位數字的月份(不足兩位前面補0):%tm%n",date);  
  24.     //d的使用,日(二位,不夠補零)
  25.     System.out.printf("兩位數字的日(不足兩位前面補0):%td%n",date);  
  26.     //e的使用,日(一位不補零)
  27.     System.out.printf("月份的日(前面不補0):%te",date);  
  28. }  
輸出結果
  1. 英文月份簡稱:Sep  
  2. 本地月份簡稱:九月  
  3. 英文月份全稱:September  
  4. 本地月份全稱:九月  
  5. 英文星期的簡稱:Mon  
  6. 本地星期的簡稱:星期一  
  7. 年的前兩位數字(不足兩位前面補0):20  
  8. 年的後兩位數字(不足兩位前面補0):12  
  9. 一年中的天數(即年的第幾天):254  
  10. 兩位數字的月份(不足兩位前面補0):09  
  11. 兩位數字的日(不足兩位前面補0):10  
  12. 月份的日(前面不補0):10  
和日期格式轉換符相比,時間格式的轉換符要更多、更精確。它可以將時間格式化成時、分、秒甚至時毫秒等單位。格式化時間字串的轉換符如圖所示。

轉  換  符

說    明

示    例

H

2位數字24時制的小時(不足2位前面補0)

15

I

2位數字12時制的小時(不足2位前面補0)

03

k

2位數字24時制的小時(前面不補0)

15

l

2位數字12時制的小時(前面不補0)

3

M

2位數字的分鐘(不足2位前面補0)

03

S

2位數字的秒(不足2位前面補0)

09

L

3位數字的毫秒(不足3位前面補0)

015

N

9位數字的毫秒數(不足9位前面補0)

562000000

p

小寫字母的上午或下午標記

中:下午

英:pm

z

相對於GMT的RFC822時區的偏移量

+0800

Z

時區縮寫字串

CST

s

1970-1-1 00:00:00 到現在所經過的秒數

1193468128

Q

1970-1-1 00:00:00 到現在所經過的毫秒數

1193468128984


測試程式碼
  1. publicstaticvoid main(String[] args) {  
  2.     Date date = new Date();  
  3.     //H的使用
  4.     System.out.printf("2位數字24時制的小時(不足2位前面補0):%tH%n", date);  
  5.     //I的使用
  6.     System.out.printf("2位數字12時制的小時(不足2位前面補0):%tI%n", date);  
  7. 相關推薦

    Python format 函式使用

    原文地址:http://www.runoob.com/python/att-string-format.html Python2.6 開始,新增了一種格式化字串的函式 str.format(),它增強了字串格式化的功能。 基本語法是通過 {} 和 :&

    詳解python中format函式的強大功能

    1、引數替換        format函式可以不限定引數個數,不限定引數位置。        一、不設定指定位置,按預設順序           &nb

    format函式之幾種常規用法

    format函式是一種格式化輸出字串的函式(str.format),基本語法是通過{}和:來代替以前的%。 1.可以接受不限個引數,位置可以不按順序 >>>"{} {}".format("hello", "world") # 不設定指定位置,按預設順序 'hello worl

    VB中format函式的使用。

    VB格式輸出函式可以使數值、日期或字串按指定的格式輸出。其格式為: Format(<表示式>[, <格式字串>]) 其中,<表示式>:要格式化的數值、日期或字串表示式。 <格式字串>:指定表示式的值的輸出格式。格式字元有三類:數值格

    c++builder Format函式的用法

    C++Builder 中的 Format 函式作用與 Delphi 中的是一樣的,相信不用我廢話了。但是唯一不同的是引數。由於 Delphi 支援“開引數”和動態陣列特性,所以 Delphi 中的 Format 只有兩個引數,其中後一個引數就是一個動態開引數常數陣列。請注意我的用詞!Delphi 的

    Python的format()函式

    前言 上篇博文,我們用format(number,',')快速實現了對數字千分位的分隔。 熟悉python的人都知道,foramt函式更常見的用法其實是str.format(),其基本語法是通過{}和:來代替以前的%。 示例: >>>"{} {}".format

    python shape()函式format()函式用法

    shape() shape():讀取矩陣長度,如shape[0]是讀取矩陣第一維的長度。 1.引數是一個數時,返回為空: 2.引數是一維矩陣: 3.引數是二維矩陣:  4.直接用shape()可快速讀取矩陣的形狀,shape[0]讀取矩陣第一維的

    js中的string.format函式程式碼

    <1> String.prototype.format = function(args) { var result = this; if (arguments.length > 0) { if (arguments.le

    【已解決ValueError:Invalid format specifie】format()函式輸出格式問題

    在上一例Python爬蟲例項中出現:format()函式格式錯誤——ValueError:Invalid format specifie 下列程式碼正確顯示: tplit = "{0:^10}\t{1:{3}^10}\t{2:^10}" print(tplit.forma

    java的String.format()函式

    String類的format()方法用於建立格式化的字串以及連線多個字串物件。熟悉C語言的同學應該記得C語言的sprintf()方法,兩者有類似之處。format()方法有兩種過載形式。 format(String format, Object... args) 新字串使用本地語言環境,制定字串格式和引數

    python 中的%s和%r、str.format()函式

    %r是repr %s就是str >>> print '%r' % 'a' 'a' >>> print '%s' % 'a' a >>> class

    python中強大的format函式

    自python2.6開始,新增了一種格式化字串的函式str.format(),此函式可以快速處理各種字串。 語法 它通過{}和:來代替%。 請看下面的示例,基本上總結了format函式在python的中所有用法 1 #通過位置 2 print '{0},{1}

    Format函式—字串格式化

    Format函式: 作用:格式化輸出字串 格式: ‘’.format(value[,format_spec=’ ‘]) 示例: #位置匹配 >>> sun = ‘sunhziwen’ >>> s =43 >>>

    C++ Format 函式的使用

    前面先來一些找到的資料 vc中format的用法: 以CString的Format舉例,第一個引數是格式化字串,就像printf的第一個引數一樣,用%d表示int,%s表示char*,%u表示unsigned int,%hd表示short,%hu表示unsigned

    js 字串格式化format函式擴充套件

    js中有時需要格式化一個字串,但js string類並沒有format函式,有時候動態填充的資料太長,拼接起來很麻煩,我們可以通過string類原型擴充套件自定義一個,方便使用,下面是format的一

    c++ 中的format函式

    c++中字串format,還是需要用到c語言中的sprintf_s,在c++ 庫中,我之前只學了c++語言,對於c語言的學習有一些抵觸情緒,但是有好的東西還是得接收。至少sprintf_s以及c語言的printf比c++中的cout強不知道多少倍了。 sprin

    C++ format 函式

    Format是一個很常用,卻又似乎很煩的方法,以下是它的完整概貌,以供大家查詢之用:一、字串 首先看它的宣告:function Format(const Format: string; const Args: array of const): string; overload;事實上Format方法有兩

    Python format函式的用法詳解

    原文轉自:https://blog.csdn.net/it_python/article/details/81037078 1.通過位置來填充字串 print('hello {0} i am {1}'.format('world','python'))    # 輸入結果:h

    【C++ 】 format 函式詳解

    Format是一個很常用,卻又似乎很煩的方法,以下是它的完整概貌,以供大家查詢之用:一、字串首先看它的宣告:function Format(const Format: string; const Args: array of const): string; overload;事實上Format方法有兩個種形式

    C++ 自制string的format函式

    #include <stdlib.h> #include <iostream> #include <list> #include <conio.h> #