string.byte(s [, i [, j]])
string.byte是用來把字符轉換成ascii數字,s為目標字符串,i為索引開始位置(從1開始),j為索引結束位置
string.char(...)
例子
--默認為第1個返回a的ascii值 local r = string.byte('abcdefg') --97 --從索引2(b)到索引4(d)也就是分別返回bcd的ascii值 local r1,r2,r3 = string.byte('abcdefg',2,4) --98,99,100 --返回98所對應的字符 local r = string.char(98) --a --返回98,,99,100對應的字符並連在一起返回 local r = string.char(98,99,100) --abc
string.sub (s, i [, j])
截取字符串(字符串分割,字符串截取),i為起始索引,可選參數j為結束索引(包含),都可以為負數,第一個字符索引為1,最后一個字符為-1
例子
local res,s s = 'www.freecls.com' res = string.sub(s,5) --freecls.com res = string.sub(s,5,-1) --freecls.com --截取后3位 res = string.sub(s,-3) --com --截取前3位 res = string.sub(s,1,3) --www
string.dump(function)
把函數序列化成字符串來保存那么下次要使用的時候直接用loadstring或loadfile就可以還原函數
例子
function say() print('hello') end local f_str = string.dump(say) print(f_str) --uaQ --復原函數 local func = loadstring(f_str) func() --如果我們把f_str保存到了文件tmp.txt則可以用loadfile('tmp.txt')來還原函數
string.find (s, pattern [, init [, plain]])
字符串查找函數找不到返回nil,找到了返回開始位置和結束位置,init為從哪里開始默認為1,plain默認為false表示利用模式匹配,如果設為true則表示純文本匹配(也就是關閉正則匹配)
例子
local str = 'i love programming,11,22,%d+aa' local s = string.find(str,'222') --nil s = string.find(str,'pro') --8 s = string.find(str,",%d+") --19(匹配到了,11) s = string.find(str,",%d+",1,true) --25(由於關閉了模式匹配,所以匹配到了,%d+)
string.match (s, pattern [, init])
它跟string.find差不多,只不過能把捕獲匹配到的結果並返回
例子
local s,res,res1,res2 s = 'http://www.freecls.com' --由於沒有捕獲,返回全部匹配 --結果:http://www.freecls.com res = string.match(s,'http://%a+\.%a+\.com') --如果有捕獲,則分別返回捕獲結果 --結果:www freecls res1,res2 = string.match(s,'http://(%a+)\.(%a+)\.com')
string.gsub (s, pattern, repl [, n])
用來做字符串替換,可選參數n代表替換多少次默認全部替換,返回替換后的字符串
例子
local s,res,res1,res2 s = 'http://www.freecls.com' --結果:http://test.freecls.com res = string.gsub(s,'www','test') --捕獲替換 --結果:test.freecls.abc res = string.gsub(s,'^http://%w+\.(%w+)\.com$','test.%1.abc') --w替換成t,但是只替換2次 --結果:http://ttw.freecls.com res = string.gsub(s,'w','t',2)
string.gmatch (s, pattern)
迭代匹配
例子
local s = 'www.freecls.com' words = {} for w in string.gmatch(s, "%a+") do words[#words + 1] = w end --words最終結果為 --{'www','freecls','com'}
string.format (formatstring, ···)
字符串格式化類型c語言的sprintf不說廢話以例子來講解
local s = string.format('%d%s',123,'freecls') --123freecls s = string.format('%0.2f',1.234343) --1.23(保留2位) --轉成16進制,%X為大寫的16進制 local s = string.format('%X',140) --8C local s = string.format('%x',140) --8c local s = string.format('%04x',140) --008c
string.len(s)
返回字符串長度
string.rep(s,n)
字符串重復n次並拼接返回
string.lower(s)
轉小寫
string.upper(s)
轉大寫
string.reverse(s)
反轉字符串
