Lua string函数说明

本文详细介绍了Lua语言中字符串处理的各种内置函数,包括字符串查找、替换、格式化等实用功能,并通过具体示例展示了如何运用这些函数来高效地完成字符串操作任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)

返回字符串的大写复本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值