Lua中有内置的对字符串进行操作的方法,这些方法在一般的开发中也足够帮我们应对字符串的相关处理。
table表是Lua的核心,他可以让我们实现在Lua中模拟类和对象。
一、字符串
1.表现形式:
2.字符串相关操作方法
1.字母大小写转换:string.upper( 字符串变量 ):字母全部转大写格式
string.lower( 字符串变量 ):字母全部转小写格式
2.字符串反转:string.reverse( 字符串变量 ):将字符串进行位置反转
3.字符串长度:string.len( 字符串变量 ):返回字符串的长度
4.字符串替换:string.gsub(原始字符串,旧字符串,新字符串,[替换次数])
5.字符串格式化:string.format(字符串格式,变量 1,变量 2,变量 N)
3.字符串相关字符
二、table表
1.table的基本定义:
<1>.什么是 table?:table 是 Lua 语言中的一种“数据/代码结构”,可以用来帮助我们创建不同 的“数据类型”;Lua 语言中的数组其实就是 table 类型.
<2>.table 和数组的关系:table 是 Lua 语言中的一种“代码格式结构”,而 Lua 当中的数组就是使用 table这种结构实现的。
2.table的基础操作:
myTable = {} --直接声明
myTable[1] = 'first'
myTable[2] = 123
print(myTable[1])
2.键值对方式,类似于 C#当中的 Dictionary<k, v>泛型字典.
myTable = {} --直接声明
myTable['name'] = 'myName'
myTable['age'] = 21
myTable['isboy'] = true
print(myTable['age'])
c.迭代器方式遍历 table
for key, value in ipairs(表名) do --如果是数组结构,用 ipairs 方法;如果是键值对结构,用 pairs 方法.
print(key, value)
end
<2>.table的相关操作方法:
1.增加元素:table.insert(表名, [位置], 值)
往指定的位置增加元素,如果不写位置,默认往最后一个位置增加。
这个方式适合“数组模式”,不太适合“键值对模式”。
键值对就用:表名[‘键’] = 值 的方式添加即可。
2.移除元素:table.remove(表名, [位置])
如果不写位置,默认移除最后一个元素,如果位置值超出范围,不会报错,也不会有元素被移除。
这个方式适合“数组模式”,不能用于“键值对模式”。
键值对就用:表名[‘键’] = nil 的方式移除即可。
3.table 长度:table.getn(表名), 返回 table 表的长度。
这个方式适合“数组模式”,不能用于“键值对模式”。
键值对就用:迭代器迭代,然后累加一个变量的方式获得长度。
三、Lua的Metatable元表
本来Metatable元表也可归到table中,但正因为有了Metatable元表,才让我们在Lua中有了类和对象的概念。
1.元表的作用:
2.元表相关操作方法:
<1>.实例化两个普通表[表 A 和表 B]
<2>.关联两个表[将表 B 设置成表 A 的元表],需要用一个新的函数:setmetatable(表 A, 表 B)
<3>.getmetatable(表名):如果表名有元表,就返回元表的类型和地址;如果没有元表,则返回一个 nil
<4>.元表名.__index = 元表名 (index前为两个_)
tableA = {}
tableB = {}
tableA['Aname'] = '我是A'
tableA['Aage'] = 25
tableB['Bname'] = '我是B'
tableB['Bage'] = 95
setmetatable(tableA, tableB) --将tableA设为主表,tableB为子表
tableB.__index = tableA --将tableB的索引赋给tableA,这一步不能遗漏
print(tableA.Bname) --此时tableA就可以通过tableB的索引访问其中的值
print(tableA['Bname']) --也就是说table完全成为了tableA的一部分