一、string
- 常用函数
**string.byte(s [, i [, j]])**
**string.char(···)**
**string.dump(function [, strip])**
**string.find(s, pattern [, init [, plain]])**
**string.format(formatstring, ···)**
**string.gmatch(s, pattern [, init])**
**string.gsub(s, pattern, repl [, n])**
string.gsub("hello world", "(%w+)", "%1 %1") -- "hello hello world world"
string.gsub("hello world", "%w+", "%0 %0", 1)-- "hello hello world"
string.gsub("hello world from Lua", "(%w+)%s*(%w+)", "%2 %1") -- "world hello Lua from"
string.gsub("home = $HOME, user = $USER", "%$(%w+)", os.getenv) -- "home = /home/roberto, user = roberto"
string.gsub("4+5 = $return 4+5$", "%$(.-)%$", function(s)
return load(s)()
end)
--> x="4+5 = 9"
local t = {name="lua", version="5.4"}
x = string.gsub("$name-$version.tar.gz", "%$(%w+)", t) -- "lua-5.4.tar.gz"
**string.len(s)**
**string.lower(s)**
**string.match(s, pattern [, init])**
**string.reverse(s)**
**string.sub(s, i [, j])**
**string.upper(s)**
- string parterns
字符串模式匹配不同于其他编程语言支持的标准正则匹配
一个字符类可以被用于表示一组字符,以下组合被允许来来描述一个字符类:
- x :表示字符x本身(这里的x表示不是魔法字符^$()%.[]*+-?中的一个)。
- . :表示所有字符(一个点/英文中句号)。
- %a:表示所有字母。
- %c:表示所有控制字符。
- %d:表示所有十进制数字。
- %l:表示所有小写字母。
- %p:表示所有标点符号。
- %s:表示所有空白字符。
- %u:表示所有大写字母。
- %w:表示所有字母和数字。
- %x:表示所有十六进制数。
- %z:表示0值字符。
- %x:表示字符x(此处的字符x不是字母或数字)。这是讲魔术字符转义的标准方式,当被用于在模式中表示自身时,任何标点符号(甚至非魔术的)都能加一个前缀%。
- [set]:表示set中的所有字符的联合构成的分类。通过用-分隔截止字符可以指定某个范围的字符。上面描述的所有种类的%x都可用作set的组成部分。set中的所有其他字符表示它们自身。例如[%w](或[%w])表示所有字母数字字符和下划线,[0-7]表示八进制数字,[0-7%l%-]表示八进制数字和小写字母以及-字符。
- [^set]:表示set的补集,其中的set在上面解释了。
- 字符范围和字符类之间的相互作用是未定义的。因此类似[%a-z]或[a-%%]的模式没有意义。
- 对于所有单字母表示的字符类(%a、%c等等),相应的大写字母表示该字符类的补集。例如,%S表示所有非空白符。
- 字母、空白和其他字符组合的定义依赖于当前locale。特别地,字符类[a-z]可能不等于%l。
一个模式选项可以是:
- 一个单个字符类,它匹配该类中的任意单个字符。
- 一个后跟*的单个字符类,它匹配该类中的0或多个字符。这些重复项将总是匹配最长的可能序列。
- 一个后跟+的单个字符类,它匹配该类中的1或多个字符。这些重复项将总是匹配最长的可能序列。
- 一个后跟-的单个字符类,它也匹配该类中的0或多个字符。与*不同,这些重复项将总是匹配最短的可能序列。
- 一个后跟?的单个字符类,它匹配出现0或1次该类中的字符。
- %n中的n在1和9之间,这种项匹配一个等价于捕获的字符串的第n个子串(见下面)
- %bxy中x和y是两个不同的字符;这种项匹配始于x终于y的字符串,并且x和y是对称的。这表示,如果一个人从左到右读字符串,对x计数为+1,对y计数为-1,结尾的y是第一个遇到计数为0的y。例如,项%b()匹配带有平衡的圆括号的表达式。
二、table
**table.concat(t [,sep,[,i[,j]]])**
**table.insert(t, [pos,] value)**
**table.maxn(t)**
**table.remove(t [,pos])**
**table.sort(t [,comp])**
三、数学运算
**math.abs (x)**
**math.acos (x)**
**math.asin (x)**
**math.atan (y [, x])**
**math.ceil (x)**
**math.cos (x)**
**math.deg (x)**
**math.exp (x)**
**math.floor (x)**
**math.fmod (x, y)**
**math.huge**
**math.log (x [, base])**
**math.max (x, ···)**
…
参考链接
Lua String Manipulation http://www.lua.org/manual/5.4/manual.html#6.4
Lua String Patterns https://www.jianshu.com/p/c69ab1c4f7c3
Lua Methematical Functions http://www.lua.org/manual/5.4/manual.html#6.7