Lua 提供了 string.format() 函數來生成具有特定格式的字符串, 函數的第一個參數是格式 , 之后是對應格式中每個代號的各種數據。
由於格式字符串的存在, 使得產生的長字符串可讀性大大提高了。這個函數的格式很像 C 語言中的 printf()。
以下實例演示了如何對字符串進行格式化操作:
格式字符串可能包含以下的轉義碼:
- %c - 接受一個數字, 並將其轉化為ASCII碼表中對應的字符
- %a+,a表示接受一個字母,+表示可以接受多個字母,就是接受單詞的意思
- %d, %i - 接受一個數字並將其轉化為有符號的整數格式
- %o - 接受一個數字並將其轉化為八進制數格式
- %u - 接受一個數字並將其轉化為無符號整數格式
- %x - 接受一個數字並將其轉化為十六進制數格式, 使用小寫字母
- %X - 接受一個數字並將其轉化為十六進制數格式, 使用大寫字母
- %e - 接受一個數字並將其轉化為科學記數法格式, 使用小寫字母e
- %E - 接受一個數字並將其轉化為科學記數法格式, 使用大寫字母E
- %f - 接受一個數字並將其轉化為浮點數格式
- %g(%G) - 接受一個數字並將其轉化為%e(%E, 對應%G)及%f中較短的一種格式
- %q - 接受一個字符串並將其轉化為可安全被Lua編譯器讀入的格式
- %s - 接受一個字符串並按照給定的參數格式化該字符串
為進一步細化格式, 可以在%號后添加參數. 參數將以如下的順序讀入:
- (1) 符號: 一個+號表示其后的數字轉義符將讓正數顯示正號. 默認情況下只有負數顯示符號.
- (2) 占位符: 一個0, 在后面指定了字串寬度時占位用. 不填時的默認占位符是空格.
- (3) 對齊標識: 在指定了字串寬度時, 默認為右對齊, 增加-號可以改為左對齊.
- (4) 寬度數值
- (5) 小數位數/字串裁切: 在寬度數值后增加的小數部分n, 若后接f(浮點數轉義符, 如%6.3f)則設定該浮點數的小數只保留n位, 若后接s(字符串轉義符, 如%5.3s)則設定該字符串只顯示前n位.