返回一个iterator函数,每次调用它返回下个匹配。
s = "hello world from Lua"
for w in string.gmatch(s,"%a+") do
print(w)
end
另一个例子,收集key=value对。
t = {}
s = "from=world,to=Lua"
for k,v in string.gmatch(s,"(%w+)=(%w+)") do
t[k] = v
end
string.gsub (s,|pattern|,repl[,n])
返回字符串s经过匹配替换的副本,如果发现模式就用repl替换。reple
可以是一个字符串,表格,或者函数。gsub返回第二个值是匹配的次数。
如果reple是一个字符串,将直接用于替换。%为转义字符,%d(d为1-9)
代表第n次俘获|captures|字串。%0代表整个匹配,%%代表字符%。
如果reple是一个表格,使用第一个俘获|captures|作为key查询该表格。
如果reple是一个函数,每次匹配成功将调用该函数。
如果表格查询和函数返回的是一个字符串或者数值,将被用于替换。如果
是false或者nil,将不替换。
x = string.gsub("hello world","(%w+)","%1 %1")
--> x="hello hello world world"
x = string.gsub("hello world","%w+","%0 %0",1)
--> x="hello hello world"
x = string.gsub("hello world from Lua","(%w+)%s*(%w+)","%2 %1")
--> x="world hello Lua from"
x = string.gsub("home = $HOME,user = $USER","%$(%w+)",os.getenv)
--> x="home = /home/roberto,user = roberto"
x = string.gsub("4+5 = $return 4+5$","%$(.-)%$",
function(s)
return load(s)()
end )
--> x="4+5 = 9"
local t = {name="lua",version="5.2"}
x = string.gsub("$name-$version.tar.gz","%$(%w+)",t)
--> x="lua-5.2.tar.gz"
string.len (s)
返回字符串的长度。空字符串""返回0。内部0也被计数。
如"a\000bc\000"返回5。
string.lower (s)
接收字符串返回该字符串小写复本。
string.match (s,|pattern|[,init])
查找s中的第一个匹配。如果发现一个,match返回pattern俘获。否则
返回nil。如果pattern不包括俘获|captures|,返回整个匹配。
可选参数init表示开始查找位置默认1,可以为负值。 >
x = string.match("hello world","%w+")
--> x="hello"
local x,y = string.match("hello world","(%w+)%s*(%w+)")
--> x="hello"
--> y="world"