lua数据结构


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"           取后 2string.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())
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值