天天看點

Lua文法小貼士(二)string庫

string庫

byte方法,傳回byte值:

print(string.byte("abc")) --97
print(string.byte("abc", 2, 3)) --98 99
           

char方法,連接配接char成字元串:

print(string.char(100,101,102)) --def
           

find方法,查找子字元串的起始和結束下标:

local s = "It's 10 o'clock in the morning."
local p = "%d+ o'"
print(string.find(s,p)) --6 10
print(string.find(s,p,7)) --7 10
print(string.find(s,p,1,true)) --nil
print(string.find(s,"o'",1,true)) --9 10
           

第三個參數代表從第幾個字元開始查找,第四個參數表示是否是明文(即不使用變量模式)

match方法,查找子字元串:

local s = "Today is 10/10/2016"
local p = "%d+/%d+/%d+"
print(string.match(s,p)) --10/10/2016
print(string.match(s,p,11)) --0/10/2016
           

format方法,格式化字元串:

print(string.format("%d,%f,%x,%s",10,7.25,92,"num")) -- 10,7.250000,5c,num
           

gmach方法,傳回比對模式的周遊:

local s = "Hello world from lua"
for w in string.gmatch(s,"%a+") do
    print(w)
end
           

len方法,傳回長度:

print("") --0
print("a\000bc\000") --5
           

lower方法,轉換成小寫字母:

print(string.lower("LUA")) --lua
           

upper方法,轉換成大寫字母:

print(string.upper("lua")) --LUA
           

rep方法,重複字元串:

print(string.rep("hia",3)) --hiahiahia
           

reverse方法,翻轉字元串:

print(string.reverse("lemon")) --monel
           

sub方法,子串:

print(string.sub("function"),5,8) --tion
           

gsub方法,替換子串,傳回替換後的字元串和被替換的次數:

local s = "All over the world"
lcoal p = "l"
local r = "x"
print(string.gsub(s,p,r))  --Axx over the worxd 3
print(string.gsub(s,p,r,1)) --Axl over the world 1
print(string.gsub(s,p,r,2)) --Axx over the world 2
print(string.gsub(s,p,r,3)) --Axx over the worxd 3
print(string.gsub(s,p,r,4)) --Axx over the worxd 3
           

dump方法,将傳入的function轉換成二進制的形式,這樣就可以使用loadstring來擷取function的副本。function必須是不包含upvalues的Lua function。

local function DumpTest()
    print("Test")
end
local a = string.dump(DumpTest)
print(a)
local b = loadstring(a)
print(b)
b()
           

參考:

Lua文法小貼士(一)字元串基礎操作

Lua文法小貼士(二)string庫

Lua文法小貼士(三)魔法字元