lua 字符串處理


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)

反轉字符串



 


免責聲明!

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



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