名稱 說明 java
Format(String, Object) 將指定的 String 中的格式項替換爲指定的 Object 實例的值的文本等效項。 編程
Format(String, array<>[]()[]) 將指定 String 中的格式項替換爲指定數組中相應 Object 實例的值的文本等效項。 數組
Format(IFormatProvider, String, array<>[]()[]) 將指定 String 中的格式項替換爲指定數組中相應 Object 實例的值的文本等效項。指定的參數提供區域性特定的格式設置信息。 編程語言
Format(String, Object, Object) 將指定的 String 中的格式項替換爲兩個指定的 Object 實例的值的文本等效項。 ide
Format(String, Object, Object, Object) 將指定的 String 中的格式項替換爲三個指定的 Object 實例的值的文本等效項。函數
多個參數.net
int m[]=new int{a,b,c,d};orm
string.format("{0}{1}{2}",m);對象
一個參數字符串
private const string _extraClause = " AND C_INTERNSHIPORG_INTERNSHIPID = {0}";
//將MyCrypt.Decrypt(Request["id"])做爲_extraClause 的參數
if (Request["id"] != null && Request["id"] != string.Empty)
{
mExtraMessage = string.Format(_extraClause, MyCrypt.Decrypt(Request["id"]));
}
二、格式化數值結果表
字符
說明
示例
輸出
C 貨幣 string.Format("{0:C3}", 2) $2.000
D 十進制 string.Format("{0:D3}", 2) 002
E 科學計數法 1.20E+001 1.20E+001
G 常規 string.Format("{0:G}", 2) 2
N 用分號隔開的數字 string.Format("{0:N}", 250000) 250,000.00
X 十六進制 string.Format("{0:X000}", 12) C
string.Format("{0:000.000}", 12.2) 012.200
string.format用來格式化字符串(按指定的規則鏈接字符串或輸出其餘變量並返回新的字符串) 。
string.format(fm,...);
第一個參數用fm表示輸出的格式,每一個%符號後面是一個格式化表達式,每一個格式化表達式按順序對應後面的參數。
因此用了N個格式化表達式,就必須在後面添加N個參數。
下面是一個簡單的例子:
int = 123;
str = "字符串"
--下面的%s對應參數str, %i對應參數int
str = string.format("這是字符串:'%s' 這是數字值 %i",str,int);
win.messageBox(str);
--%05i表示格式化爲至少五位的數字,不足在前面補0
str = string.format("%05i",int);
win.messageBox(str);
格式化表達式:%[零個或多個標誌][最小字段寬度][精度][修改符]格式碼
注意:[]方括號表示可選參數
一、格式碼
代碼 c
參數 數字值(number)
含義 參數被裁剪爲8位字節碼並做爲字符進行打印。
代碼 i,d
參數 數字值(number)
含義 參數做爲一個十進制整數打印。若是給出了精度並且值的位數小於精度位數,前面就用0填充。
代碼 u,o,x,X
參數 數字值(number)
含義 參數做爲一個無符號數字值打印,u使用十進制,o使用八進制,x或X使用十六進制,二者的區別是x約定使用abcdef,而X約定使用ABCDEF。
代碼 e,E
參數 數字值(number)
含義 參數根據指數形式打印。例如,6.023000e23是使用代碼e,6.023000E23是使用代碼E。小數點後面的位數由精度字段決定,缺省值是6。
代碼 f
參數 數字值(number)
含義 參數按照的常規浮點格式打印。精度字段決定小數點後面的位數,缺省值是6。
代碼 g,G
參數 數字值(number)
含義 參數以%f或%e(如G則%E)的格式打印,取決於它的值。若是指數大於等於-4但小於精度字段就使用%f格式,不然使用指數格式。
代碼 s
參數 字符串值(string)
含義 打印一個字符串。
代碼 q
參數 (無)
含義 打印一個字符串,並將字符串置於一對引號中,若是字符串中包含引號換行等自動添加轉義符。若是要讀取一個字符串傳爲腳本代碼。爲避免用戶惡意注入引號等特殊字符,可使用%q進行格式化。
代碼 %
參數 (無)
含義 取消%轉義打印一個%字符,即用%%表示原本的%。
二、 標誌
標誌 -
含義 值在字段中作對齊,缺省狀況下是右對齊。
標誌 0
含義 當數值爲右對齊時,缺省狀況下是使用空格填充值左邊未使用的列。這個標誌表示用零填充,它可用於d,i,u,o,x,X,e,E,f,g和G代碼。
使用d,i,u,o,x和X代碼時,若是給出了精度字段,零標誌就被忽略。若是格式代碼中出現了負號,零標誌也沒有效果。
標誌 +
含義 當用於一個格式化某個有符號值代碼時,若是值非負,正號標誌就會給它加上一個正號。若是該值爲負,就像往常同樣顯示一個負號。在
缺省狀況下,正號並不會顯示。
標誌 空格
含義 只用於轉換有符號值的代碼。當值非負時,這個標誌把一個空格添加到它開始的位置。注意這個標誌和正號標誌是相互排斥的,若是兩個
同時給出,空格標誌便被忽略。
標誌 #
含義 選擇某些代碼的另外一種轉換形式:
用於... #標誌...
o 保證產生的值以一個零開頭
x,X 在非零值前面加0x前綴(%X則爲0X)
e,E,f 確保結果始終包含一個小數點,即便它後面沒有數字
g,G 和上面的e,E和f代碼相同。另外,綴尾的0並不從小數中去除
三、 字段寬度
字段寬度是一個十進制整數,用於指定將出如今結果中的最小字符數。若是值的字符數少於字段寬度,就對它進行填充以增長長度。
四、 精度
精度以一個句點開頭,後面跟一個可選的十進制數。若是未給出整數,精度的缺省值爲零。
對於d,i,u,o,x和X類型的轉換,精度字段指定將出如今結果中的最小的數字個數並覆蓋零標誌。若是轉換後的值的位數小於寬度,就在它的前面插入零。若是值爲零且精度也爲零,則轉換結果就不會產生數字。
對於e,E和f類型的轉換,精度決定將出如今小數點以後的數字位數。
對於g和G類型的轉換,它指定將出如今結果中的最大有效位數。
當使用s類型的轉換時,精度指定將被轉換的最多的字符數。
若是用於表示字段寬度和/或精度的十進制整數由一個星號代替,那麼printf的下一個參數(必須是個整數)就提供寬度和(或)精度。所以,
這些值能夠經過計算得到而沒必要預先指定。
五、示例
格式代碼 A ABC ABCDEFGH
%s A ABC ABCDEFGH
%5s ####A ##ABC ABCDEFGH
%.5s A ABC ABCDE
%5.5s ####A ##ABC ABCDE
%-5s A#### ABC## ABCDEFGH
格式代碼 1 -12 12345 123456789
%d 1 -12 12345 123456789
%6d #####1 ###-12 #12345 123456789
%.4d 0001 -0012 12345 123456789
%6.4d ##0001 #-0012 #12345 123456789
%-4d 1#### -12# 12345 123456789
%04d 0001 -012 12345 123456789
%+d +1 -12 +12345 +123456789
格式代碼 1 .01 .00012345 12345.6789
%f 1.000000 0.010000 0.000123 12345.678900
%10.2d ######1.00 #####0.01 ######0.00 ##12345.67
%e 1.000000e+00 1.000000e-02 1.234500e-04 1.234568e+04
%.4e 1.0000e+00 1.0000e-02 1.2345e-04 1.2346e+04
%g 1 0.01 0.00012345 12345.7
格式代碼 6.023e23
%f 60229999999999975882752.000000
%10.2e 60229999999999975882752.00
%e 6.023000e+23
%.4e 6.0230e+23
%g 6.023e+23
用上面的格式化函數能夠輕鬆實現數字的進制轉換
--數字轉換爲二進制字符串
str = string.format("%b",23 );
--二進制字符串轉換爲數字
n = tonumber(str,2)
--數字轉換爲八進制字符串
str = string.format("%o",23 );
--八進制字符串轉換爲數字
n = tonumber(str,8)
--數字轉換爲十六進制字符串
str = string.format("%x",23 );
--十六進制字符串轉換爲數字
n = tonumber(str,16)
4、格式化時間
模擬精靈v7.10 格式化時間的函數有 string.time;string.ftime;os.data;os.time 等函數。
os.time 是從table生成數字時間值 string.time是從字符串生成數字時間值。
os.data 與string.ftime功能相同從時間值反過來生成字符串或時間。
這裏咱們介紹string.time函數、string.ftime函數,下面是使用示例:
--從字符串建立時間值
t = string.time("2006/6/6 0:0:0","%Y/%m/%d %H:%M:%S")
--從時間值建立字符串
str = string.ftime("%Y/%m/%d %H:%M:%S",t )
格式化語法(在不少編程語言中都適用的語法)
%a - 當前區域星期幾的簡寫
%A - 當前區域星期幾的全稱
%b - 當前區域月份的簡寫
%B - 當前區域月份的全稱
%c - 當前區域首選的日期時間表達
%C - 世紀值(年份除以 100 後取整,範圍從 00 到 99)
%d - 月份中的第幾天,十進制數字(範圍從 01 到 31)
%D - 和 %m/%d/%y 同樣
%e - 月份中的第幾天,十進制數字,一位的數字前會加上一個空格(範圍從 ' 1' 到 '31')
%g - 和 %G 同樣,可是沒有世紀
%G - 4 位數的年份,符合 ISO 星期數(參見 %V)。和 %V 的格式和值同樣,只除了若是 ISO 星期數屬於前一年或者後一年,則使用那一年。
%h - 和 %b 同樣
%H - 24 小時制的十進制小時數(範圍從 00 到 23)
%I - 12 小時制的十進制小時數(範圍從 00 到 12)
%j - 年份中的第幾天,十進制數(範圍從 001 到 366)
%m - 十進制月份(範圍從 01 到 12)
%M - 十進制分鐘數
%n - 換行符
%p - 根據給定的時間值爲 `am' 或 `pm',或者當前區域設置中的相應字符串
%r - 用 a.m. 和 p.m. 符號的時間
%R - 24 小時符號的時間
%S - 十進制秒數
%t - 製表符
%T - 當前時間,和 %H:%M:%S 同樣
%u - 星期幾的十進制數表達 [1,7],1 表示星期一
%U - 本年的第幾周,從第一週的第一個星期天做爲第一天開始
%V - 本年第幾周的 ISO 8601:1988 格式,範圍從 01 到 53,第 1 周是本年第一個至少還有 4 天的星期,星期一做爲每週的第一天。(用 %G 或者 %g 做爲指定時間戳相應週數的年份組成。)
%W - 本年的第幾週數,從第一週的第一個星期一做爲第一天開始
%w - 星期中的第幾天,星期天爲 0
%x - 當前區域首選的時間表示法,不包括時間
%X - 當前區域首選的時間表示法,不包括日期
%y - 沒有世紀數的十進制年份(範圍從 00 到 99)
%Y - 包括世紀數的十進制年份
%Z - 時區名或縮寫
%% - 文字上的 `%' 字符
import java.util.Date;
import java.util.Locale;
import org.junit.Test;
public class StringFormat {
/*
String.format()用法
一、轉換符
%s: 字符串類型,如:"ljq"
%b: 布爾類型,如:true
%d: 整數類型(十進制),如:99
%f: 浮點類型,如:99.99
%%: 百分比類型,如:%
%n: 換行符
*/
public void test1(){
String str=null;
str=String.format("Hi, %s", "林計欽"); // 格式化字符串
System.out.println(str); // 輸出字符串變量str的內容
System.out.printf("3>7的結果是:%b %n", 3>7);
System.out.printf("100的一半是:%d %n", 100/2);
System.out.printf("50元的書打8.5折扣是:%f 元%n", 50*0.85);
System.out.printf("上面的折扣是%d%% %n", 85);
}
/*
二、常見日期時間格式化
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
*/
public void test2(){
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%n", date);
}
/*
三、格式化日期字符串
b或者h: 月份簡稱,如
中:十月
英:Oct
B: 月份全稱,如
中:十月
英:October
a: 星期的簡稱,如
中:星期六
英:Sat
A: 星期的全稱,如:
中:星期六
英:Saturday
C: 年的前兩位數字(不足兩位前面補0),如:20
y: 年的後兩位數字(不足兩位前面補0),如:07
Y: 4位數字的年份(不足4位前面補0),如:2007
j: 一年中的天數(即年的第幾天),如:300
m: 兩位數字的月份(不足兩位前面補0),如:10
d: 兩位數字的日(不足兩位前面補0),如:27
e: 月份的日(前面不補0),如:5
*/
public void test3(){
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);
}
/*
四、格式化時間字符串
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
*/
public void test4(){
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);
}
}