Lua中string.format占位符的使用


雖然lua中字符串拼接“string.format”相對於“..”消耗較大,但有時為了代碼的可讀性,項目中還是經常用到“string.format”。至於這兩個用法的性能看源碼也很容易看出來,這里就簡單說一下,前者其實調用C函數str_format來實現拼接的,而后者只是一個操作符,通過memcpy來拼接,並且多個“..”的操作其實也只執行了一次concat。

常用占位符

%c - 接受一個數字, 並將其轉化為ASCII碼表中對應的字符
%d, %i - 接受一個數字並將其轉化為有符號的整數格式
%o - 接受一個數字並將其轉化為八進制數格式
%u - 接受一個數字並將其轉化為無符號整數格式
%x - 接受一個數字並將其轉化為十六進制數格式, 使用小寫字母
%X - 接受一個數字並將其轉化為十六進制數格式, 使用大寫字母
%e - 接受一個數字並將其轉化為科學記數法格式, 使用小寫字母e
%E - 接受一個數字並將其轉化為科學記數法格式, 使用大寫字母E
%f - 接受一個數字並將其轉化為浮點數格式
%g(%G) - 接受一個數字並將其轉化為%e(%E, 對應%G)及%f中較短的一種格式
%q - 接受一個字符串並將其轉化為可安全被Lua編譯器讀入的格式
%s - 接受一個字符串並按照給定的參數格式化該字符串

舉例說明

對於“string.format”的使用,占位符的使用也是有部分技巧。

1)string.format中怎么匹配帶%的的字符串和占位符的使用

string.format("%d%%", 100) 輸出: 100%

string.format(""%s"", "Hello World") 輸出: "Hello World"

2)常用的格式控制符

可以在%號后添加參數. 參數將以如下的順序讀入:

(1) 符號: 一個+號表示其后的數字占位符將讓正數顯示正號. 負數不變.

(2) 占位符: 一個0, 在后面指定了字串寬度時占位用. 默認占位符是空格.

(3) 對齊標識: 在指定了字串寬度時, 默認為右對齊, 增加-號可以改為左對齊.(用於一些自動空格地方)

(4) 寬度數值 .小數位數/字串裁切: 在寬度數值后增加的小數部分n, 若后接f則設定該浮點數的小數只保留n位, 若后接s則設定該字符串只顯示前n位.

string.format("%05d", 2015) 輸出: 02015

string.format("%+04d", -2015) 輸出: -2015

string.format("%+04d", 2015) 輸出: +2015

string.format("%.5f", math.pi) 輸出: 3.14159

string.format("%.8f", 0.123456789) 輸出: 0.12345679 (這里可以看到第八位變成了9而不是8,其實是做了一個四舍五入操作)

string.format("%.4s", "canglang") 輸出: cang

string.format("%8.4s", "canglang") 輸出: cang

位數不夠前面補0

比如1,2,3,10,11,在顯示時都顯示成兩位數

print(string.format("%02d", 1)) ---01
print(string.format("%02d", 11)) ---11

本文內容摘自:https://blog.csdn.net/canglangclient/article/details/49154093?utm_source=copy

C#語言版本:String的高級用法(String.Format)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM