全局变量表

table模块

table.concat(table, sep, start=1, end=table的数组部分长度) 把数组table中从第start项到第end项(包括第end项)每一项用sep分隔连接成一个字符串,返回拼接后的字符串

table.insert(table, pos, value) 在数组table的第pos个位置插入一个值value,如果只传2个参数table和value,则在table的数组部分的最后位置之后插入value,无返回值

table.append(table, value) 在数组的最后位置之后插入value,无返回值

table.length(table) 获取数组的数组部分的长度

table.remove(table, pos=table数组部分长度) 函数删除并返回table数组部分位于pos位置的元素. 其后的元素会被前移. pos参数可选, 默认为table长度, 即从最后一个元素删起,返回被删除的值

table.sort(table) 函数对给定的table进行升序排序.参数table中的元素需要类型一致,无返回值

> tbl = {"hsrha", "beta", "gamma", "delta"}
> table.sort(tbl)
> print(table.concat(tbl, ", "))
hsrha, beta, delta, gamma

全局函数rawlen 返回table中数组部分元素的个数

math模块

math.abs(n) 获取参数n的绝对值

math.ceil(n) 返回不小于n的最小整数

math.floor(n) 返回不超过n的最大整数

math.max(n1,n2,...) 返回参数列表中多个值的最大值,至少需要1个参数

math.maxinteger 常数,支持的最大整数

math.min(n1,n2,...) 返回参数列表中多个值的最小值,至少需一个参数

math.mininteger 常数,支持的最小整数

math.pi 常数,π值,3.1415...

math.sqrt(n) 获取第一个参数的平方根

math.tointeger(n) 把第一个参数str字符串转成整数,如果str本身是整数,直接转成整数,如果无法转换,返回nil

math.type(num) 判断第一个参数num是整数还是浮点数

string模块

string.split(str, sep) 把str按sep划分成多块,返回一个字符串数组

string.byte(s) 返回字符串首字符对应的ASCII数字

string.char(i1, i2, …) 把多个整数对应的ascii字符构造成字符串返回

string.find(str, pattern, [init=1, [plain=nil]]) 在str字符串中查找模式字符串pattern,从str的第init个字符开始查找,plain表示是否把pattern当成普通文本字符串而不是模式字符串来查找,返会找到的第一个满足条件的子字符串的开始字符索引或者nil

模式字符串在可以用以下符号匹配源字符串中的一些子字符串

例如:

let p1 = "%d%d:%d%d"
let s = "2016/11/11 11:11"
let a = string.find(s, p1)  -- a的结果是11,也就是子字符串"11:11"的第一个字符的索引
let b = string.sub(s, a)    -- b结果是"11:11"
let c = string.find(s, p1, 3)  -- c结果是12
let d = string.find(s, p1, 1, true)  -- d结果是nil,因为第四个参数是true,所以把p1当成普通字符串进行匹配

string.format(formatstring, ...args) 类似C语言的sprintf

例如:

let a = string.format("hello, %s, the number is %d", "China", 123)

string.gmatch(str, pattern) 返回在str字符串中遍历模式字符串pattern的迭代器

例如:

t = {}
s = "from=world, to=Lua"
var k = nil
var v = nil
for k, v in string.gmatch(s, "(%w+)=(%w+)") do
   t[k] = v
end

string.gsub(str, pattern, replacer, [n]) 把str中满足pattern模式的子串投用replacer字符串或者函数进行替换,如果提供了n,只进行前n个符合的字串的替换

string.len(str) 获取字符串长度

string.match(str, pattern, [init=1]) 在str找到第一个符合模式pattern的子串,从str的第init个字符开始查找

string.rep(str, n, [sep=’’]) 返回str字符串重复n次的结果,间隔符是字符串sep

string.reverse(str) 返回字符串str的反转

string.sub(str, i, [,j=-1]) 获取str字符串的子字符串,从第i个字符开始,到第j个字符结束(包含第i和第j个字符),i和j可以是负数,表示从str反方向开始的第-i/-j个字符

string.upper(str) 把字符串str各字母字符转成大写后返回

time模块

time.add(timestamp, field, offset) 返回新时间戳,field是year/month/day/hour/minute/second其中某个字符串,offset是变化值,可以是正数、负数、零

time.tostr(timestamp) 把时间戳转成时间字符串, %yy-%m-%d %H:%M:%S格式

time.difftime(timestamp1, timestamp2) 比较2个时间戳的间隔的秒数

safemath模块

bigint(int | string): bigint
add(bigint, bigint): bigint
sub(bigint, bigint): bigint
mul(bigint, bigint): bigint
min(bigint, bigint): bigint
max(bigint, bigint): bigint
div(bigint, bigint): bigint
rem(bigint, bigint): bigint
pow(bigint, bigint): bigint
gt(bigint, bigint): bigint
ge(bigint, bigint): bigint
lt(bigint, bigint): bigint
le(bigint, bigint): bigint
eq(bigint, bigint): bigint
ne(bigint, bigint): bigint
toint(bigint): int
tohex(bigint): string
tostring(bigint): string

例子:

a = safemath.bigint('123')
pprint('a=', a)
b = safemath.bigint(456)
pprint('b=', b)
pprint('hex(a)=', safemath.tohex(a))
pprint('int(a)=', safemath.toint(a))
pprint('str(a)=', safemath.tostring(a))
c = safemath.add(a, b)
d = safemath.sub(a, b)
e = safemath.mul(a, b)
f = safemath.div(b, a)
g = safemath.pow(a, safemath.bigint(10))
pprint('c', safemath.tostring(c))
pprint('d', safemath.tostring(d))
pprint('e', safemath.tostring(e))
pprint('f', safemath.tostring(f))
pprint('g', safemath.tostring(g))

c1 = safemath.gt(a, b)
c2 = safemath.ge(a, b)
c3 = safemath.lt(a, b)
c4 = safemath.le(a, b)
c5 = safemath.eq(a, b)
c6 = safemath.ne(a, b)
c7 = safemath.eq(a, a)

pprint(safemath.tostring(a) .. ' > ' .. safemath.tostring(b) .. '=' .. tostring(c1))
pprint(safemath.tostring(a) .. ' >= ' .. safemath.tostring(b) .. '=' .. tostring(c2))
pprint(safemath.tostring(a) .. ' < ' .. safemath.tostring(b) .. '=' .. tostring(c3))
pprint(safemath.tostring(a) .. ' <= ' .. safemath.tostring(b) .. '=' .. tostring(c4))
pprint(safemath.tostring(a) .. ' == ' .. safemath.tostring(b) .. '=' .. tostring(c5))
pprint(safemath.tostring(a) .. ' != ' .. safemath.tostring(b) .. '=' .. tostring(c6))
pprint(safemath.tostring(a) .. ' == ' .. safemath.tostring(a) .. '=' .. tostring(c7))

json模块

json.dumps(任意lua值) 将lua值转成json字符串

json.loads(字符串) 将json字符串转成lua值,如果失败,返回nil

utf8模块

utf8.char(...) 接受参数中若干个数字,返回对应的UTF8编码的字节序列

utf8.charpattern 常量,能匹配UTF8字节序列的一个字符串pattern模式

utf8.codes(s) 返回变量s中所有字符的迭代器,按utf8编码

utf8.codepoint(s, i, j) 返回字符串s在索引[i, j]范围内的utf8编码的字符

utf8.len(s, i, j) 返回字符串s在索引[i, j]范围内的按utf8编码的字符长度

utf8.offset(s, n, i) 返回s中第n个字符的从第i个字节开始的字节索引