Lua 最強(qiáng)大的特性之一就是它的字符串處理能力,它支持字符格式化輸出,具有可擴(kuò)展的模式匹配查找功能,以及一些實(shí)用的字符操作,例如查詢(xún)、截取、替換和刪除等字符串操作,這些字符串操作函數(shù)都封裝在一個(gè)名為 string 的模塊里。
Lua 里的字符索引是從 1 開(kāi)始,索引值也可以是負(fù)數(shù),這種情況將被解釋成向后索引,從字符串末尾開(kāi)始算起。
下面是 Lua 5.2 提供的字符串操作函數(shù):
byte
函數(shù) string.byte 把字符串里的第 i 個(gè)字符轉(zhuǎn)為 ASCII 編碼,默認(rèn)是輸出第一個(gè)字符的編碼(只有一個(gè)參數(shù)的話(huà)),用法:
例子:
print(string.byte("abc", 2))//echo:98
char
函數(shù) string.char 是把一個(gè) ASCII 編碼轉(zhuǎn)換為對(duì)應(yīng)的字符,用法:
例子:
print(string.char(99, 100, 101)) //echo cde
dump
函數(shù) string.dump 返回一個(gè)函數(shù)二進(jìn)制形式的字符串,用法:
參數(shù) function 是一個(gè) Lua 函數(shù):
函數(shù) string.dump 實(shí)現(xiàn)了函數(shù)的序列化,函數(shù)可以很輕松的傳遞,并在其他作用域調(diào)用。函數(shù) string.dump 出來(lái)的二進(jìn)制字符串,可以用 load 函數(shù)反序列回來(lái)直接調(diào)用。
find
函數(shù) string.find 查找字符串 s 里第一個(gè)符合查找字符 pattern 的位置,用法:
如果找到了目標(biāo)字符 pattern,則返回它的開(kāi)始和結(jié)束位置:
如果沒(méi)有找到,則返回 nil:
format
函數(shù) string.format 用于把字符串格式化輸出,用法:
上面例子里的 %s 表示字符串,%d 表示數(shù)字,它們是 Lua 的格式化輸出符號(hào)。
string.format 函數(shù)的用法跟 C 語(yǔ)言里的 printf 函數(shù)類(lèi)似,例如它可以像 printf 那樣輸出指定位數(shù)的數(shù)字:
Lua 的字符格式化輸出符號(hào)列表:
gmatch
函數(shù) string.gmatch 會(huì)返回一個(gè)迭代函數(shù),尅通過(guò)該函數(shù)遍歷到一個(gè)字符串 s 中所有出現(xiàn)指定匹配模式 pattern 的地方,用法:
例如下面是找出字符串 s 里的所有單詞:
gsub
函數(shù) string.gsub 用于全局字符串替換,字符串 s 里滿(mǎn)足匹配模式 pattern 格式的字符都會(huì)被替換成 repl 參數(shù)的值,用法:
例如:
匹配模式 pattern 可以是一個(gè)正則:
可在函數(shù)的最后加上一個(gè)可選參數(shù) n,表示指定要替換的次數(shù):
len
函數(shù) string.len 用于返回字符串 s 的長(zhǎng)度,用法:
例子:
lower
函數(shù) string.lower 用于把字符串 s 里的字母轉(zhuǎn)為小寫(xiě),用法:
例如:
match
函數(shù) string.match 用于查找字符串 s 里第一個(gè)匹配對(duì)模式 pattern 的值,并返回匹配值,用法:
上面參數(shù) init 是可選, 表示查找過(guò)程的起點(diǎn), 默認(rèn)從 1 開(kāi)始:
參數(shù) patter 可以是一個(gè)正則模式:
如果 pattern 為空,則返回整個(gè)字符串;如果沒(méi)匹配成功,則返回 nil。
rep
函數(shù) string.rep 返回一個(gè)由分隔符 sep 隔開(kāi)的重復(fù)(repeat)n 次字符 s 的字符串,用法:
reverse
函數(shù) string.reverse 用于倒轉(zhuǎn)一個(gè)字符串 s 的排序,用法:
例如:
sub
函數(shù) string.sub 用于從字符串 s 里截取一個(gè)從第 i 個(gè)字符到第 j 個(gè)字符間的子字符串,用法:
upper
函數(shù) string.upper 用于把字符串 s 里的字母轉(zhuǎn)為大寫(xiě),用法:
例如:
標(biāo)簽:儋州 天門(mén) 金昌 天門(mén) 臺(tái)灣 濰坊 宣城 德宏
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Lua字符串庫(kù)(string庫(kù))學(xué)習(xí)筆記》,本文關(guān)鍵詞 Lua,字符串,庫(kù),string,學(xué)習(xí),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。