string函数
string.byte (s,[,i[,j]])
返回字符串内部编码s[i],s[i+1],...,s[j]。i默认是1,j默认是i;
和|string.sub|规则相同。内部编码不一定可移植。
string.byte("hello",1,5)
在mac上返回104,101,108,108,111
string.char (…)
接收零个或多个整数。返回由参数编码组成的字符串。相当于
|string.byte|的逆运算。内部编码不一定可移植。
string.char(104,101,108,108,111)
在mac上返回hello
string.dump (function)
返回一个字符串包含给定函数的二进制表述,以便于稍后使用|load|
函数加载该字串返回函数的副本。(可以重新指定|upvalues|)。
string.find (s,|pattern|[,init[,plain]])
查找字符串s中的第一个pattern匹配,如果发现匹配返回开始和结束
位置,否则返回nil。可选参数init指定查找开始位置默认为1,可以
为负数。第四个参数plain为true将关闭pattern匹配方式,函数简单
的搜索子串pattern。 >
string.find("data:2013/1/29.","%d+")
返回6,9
string.format (formatstring,…)
格式化输出变参,formatstring给出格式(必须是字符串)规则和C函
数sprintf一样。不同之处是*,h,L,l,n和p不被支持加入q。q可以是
string或者double数值。
string.gmatch (s,|pattern|)
返回一个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"
string.rep (s,n[,sep])
返回一个字符串,由n个s组成,用sep分割。sep默认是空字符串
(没有分割)。 >
x = string.rep("hello",3," ")
--> x="hello hello hello"
string.reverse (s)
返回反转字符串。
string.sub (s,i[,j])
返回s从i到j的字串,i和j能为负数。默认j等于-1(最后一个字符位置)。
string.sub(s,1,j)相当于返回第一个到j的字符串。
string.sub(s,-i)返回长度为i的后缀。
如果i大于j函数返回空字符串。 >
x = string.sub("lua.5.2.tar.gz",-3)
--> x=".gz"
x = string.sub("hello lua hello",3,-3)
--> x="llo lua hel"
string.upper (s)
返回字符串的大写复本。
版权声明:本文为john_crash原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。