1.table
1.基础
1.说明
k-v数据结构,k非nil的任意类型
2.赋值
local tab = {} 初始化
-- key 默认
local tab = {"a", "b", "c"}
访问:tab[1] 。。。
-- key 数字
local tab = {[60]="a", [61]="b", [62]="c"}
访问:tab[60] 。。。
-- key 字符串
local tab = {aa = "a", bb = "b", cc = "c"}
访问:tab.aa 。。。
2.常用函数
1.方法一
local tab = {}
1.增
table.insert( tab, 元素)
2.删
table.remove( tab, 1 )
3.改
4.查
5.排序
local function sort(a, b)
-- a>b倒序、a<b正序
return a < b
end
local tab = {1, 3, 100, 20, 90, 200, -100}
table.sort(tab, sort)
2.方法二
1.长度:#tab
2.string
1.基础
1.说明
1.索引:lua中字符串索引从前往后是1,2,……,从后往前是……,-2,-1
2.操作:string库中所有的function都不会修改原字符串,只返回一个结果
3.两种调用方式
local a = 'abcd' -- a操作、'abcd'索引
--与 string.len(a) 效果相同, 其他string库函数也类似
string.len(a) -- 传递self调用
a:len() -- ":"代表a,面向对象调用
2.赋值
-- 1.一般赋值
local str = 'adsd\n'
local str = "aaa\04932"
local str = [[adsds]]
local str = [==[fsdfsdf]==]
-- 2.转义字符
print('\049') a
print('\n') 换行
2.常用函数
local s = "abcdef"
1.长度
string.len(s) 6
#s 6
2.重复
string.rep(s,2) "abcdefabcdef" 重复两次
3.子字符串
-- string.sub(str, 开始下标, 结束下标(默认最后))
string.sub(s,2) "bcdefg" 从2下标开始到最后
string.sub(s,-2) "fg" 取后 2 个
string.sub(s,2,-2) "bcdef" 从2下标开始到倒数第二个(包括第二个)
string.sub(s,2,4) "bcd" 从2下标开始到下标4
4.大小
string.lower("ABC") 返回 "abc"
string.upper("abc") 返回 "ABC"
5.转成字符串
string.format("hh %s",s) 连接后 "hh abcdef"
3.正则
local s = "hello world"
1.查找匹配位置
string.find(s, "hello") 1,5
2.替换
string.gsub(s, "o", "a") "hella, warld"
4.例子
1.分割字符串
local str = 'abcdef'
for i=1,#str do
local d = string.byte(str, i)
local char = string.format("%c", d)
print(char)
end
5.编码格式
1.说明
1.汉字:一个汉字等于三个字符(字符范围 0~255)
2.特殊字符 :一个特殊字符(è)等于两个字符(字符范围 128~255)
3.其他字符: 0~127 ASSCII
举例
local str = '回好é1'
local newstr,len = string.gsub(str,"[\128-\255]",'*')
print(#newstr) 9=3+3+2+1
print(len) 8=3+3+1+1 '回好**'
2.编码
unicode、ASCII、utf8、GBK、GB231
一般都能找到对应的转换库
1.转utf8
lua 转换到 utf8 编码格式,处理汉字和特殊字符的长度及求子字符串
https://github.com/tst2005/lua-utf8
3.数学math
1.绝对值 math.abs(-15) 结果:15
2.向下取整 math.floor(5.6) 结果:5
3.余数 math.fmod(-14,5) 结果:-4
4.分割整数小数 math.modf(5.6) 结果:5,0.6
5.最大 math.max(2.71, 100, -98, 23) 结果:100
6.最小 math.min(2.71, 100, -98, 23) 结果:-98
7.随机 math.random(1, 100) 结果:1~100
8.随机种子 math.randomseed(os.time())