先做了解,主要还是需要用到再查阅文档才能熟记

一、string

  1. 常用函数

**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])**

  1. string.gsub("hello world", "(%w+)", "%1 %1") -- "hello hello world world"
  2. string.gsub("hello world", "%w+", "%0 %0", 1)-- "hello hello world"
  3. string.gsub("hello world from Lua", "(%w+)%s*(%w+)", "%2 %1") -- "world hello Lua from"
  4. string.gsub("home = $HOME, user = $USER", "%$(%w+)", os.getenv) -- "home = /home/roberto, user = roberto"
  5. string.gsub("4+5 = $return 4+5$", "%$(.-)%$", function(s)
  6. return load(s)()
  7. end)
  8. --> x="4+5 = 9"
  9. local t = {name="lua", version="5.4"}
  10. 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)**

  1. 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