String.Format使用方法

來源:互聯網
上載者:User

標籤:des   style   http   java   color   使用   

1、作為參數

  名稱 說明
  Format(String, Object) 將指定的 String 中的格式項替換為指定的 Object 執行個體的值的文本等效項。
  Format(String, array<>[]()[]) 將指定 String 中的格式項替換為指定數組中對應 Object 執行個體的值的文本等效項。
  Format(IFormatProvider, String, array<>[]()[]) 將指定 String 中的格式項替換為指定數組中對應 Object 執行個體的值的文本等效項。指定的參數提供地區性特定的格式設定資訊。
  Format(String, Object, Object) 將指定的 String 中的格式項替換為兩個指定的 Object 執行個體的值的文本等效項。
  Format(String, Object, Object, Object) 將指定的 String 中的格式項替換為三個指定的 Object 執行個體的值的文本等效項。

多個參數

int m[]=new int{a,b,c,d};

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"]));
}

2、格式化數值結果表

字元

說明

示範範例

輸出

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);

格式化運算式:%[零個或多個標誌][最小欄位寬度][精度][改動符]格式碼

注意:[]方括弧表示可選參數

1、格式碼

代碼 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進行格式化。

代碼 %
參數 (無)
含義 取消%轉義列印一個%字元,即用%%表示本來的%。

2、 標誌

標誌 -
含義 值在欄位中做對齊,預設情況下是靠右對齊。

標誌 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並不從小數中去除

3、 欄位寬度

欄位寬度是一個十進位整數,用於指定將出如今結果中的最小字元數。假設值的字元數少於欄位寬度,就對它進行填充以添加?長度。

4、 精度

精度以一個句點開頭,後面跟一個可選的十進位數。假設未給出整數,精度的預設值為零。

對於d,i,u,o,x和X類型的轉換,精度欄位指定將出如今結果中的最小的數字個數並覆蓋零標誌。假設轉換後的值的位元小於寬度,就在它的前面插入零。假設值為零且精度也為零,則轉換結果就不會產生數字。

對於e,E和f類型的轉換,精度決定將出如今小數點之後的數字位元。

對於g和G類型的轉換,它指定將出如今結果中的最大有效位元。

當使用s類型的轉換時,精度指定將被轉換的最多的字元數。

假設用於表示欄位寬度和/或精度的十進位整數由一個星號取代,那麼printf的下一個參數(必須是個整數)就提供寬度和(或)精度。因此,
這些值能夠通過計算獲得而不必預先指定。

5、示範範例

格式代碼 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)

 

四、格式化時間
類比精靈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 - 時區名或縮寫
%% - 文字上的 `%‘ 字元

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.