文章目录
- 💨更多相关知识👇
- 一、lua遍历table的几种方式
- 🍂pairs遍历
- 🍂ipairs遍历
- 🍂i=1,#xxx遍历
- 🌟代码演示
- 🍂pairs 和 ipairs区别
- 二、如何打印出脚本自身的名称
- 三、Lua运算符
- 🔸算术运算符
- 🌟代码演示
- 🔸关系运算符
- 🔸逻辑运算符
- 🔸其他运算符
- 🔸运算符优先级
- 四、math库
- 五、字符串操作方法
- 🔹string.upper(argument)
- 🔹string.lower(argument)
- 🔹string.gsub(mainString,findString,replaceString,num)
- 🔹string.find (str, substr, [init, [plain]])
- 🔹string.reverse(arg)
- 🔹string.format(...)
- 🔹string.char(arg)
- 🔹string.byte(arg[,int])
- 🔹string.len(arg)
- 🔹string.rep(string, n)
- 🔹..
- 🔹string.sub()
- 🔹string.match
- 🔹预置的字符分类及其对应的含义
- 作者:KJ.JK
💨更多相关知识👇
💖Spring中的创建对象的三种方式、第三方资源配置管理详细描述及使用(XML版完结篇)
💖Spring中的bean的配置、作用范围、生命周期详细描述及使用(XML版上篇)
💖Spring中的依赖注入、setter与构造器注入、自动装配与集合注入详细描述及使用(XML版中篇)
🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈
🍂个人博客首页: KJ.JK
💖系列专栏:JavaEE进阶教程系列
一、lua遍历table的几种方式
lua常用的遍历方式有三种,使用 "ipairs遍历、使用pairs遍历、使用i=1,#xxx遍历"
🍂pairs遍历
pairs"根据tbtest中key的hash值排列的顺序来遍历",并非创建table时各个元素的顺序
for key, value in pairs(tbtest) do //key: 下标 valueL:值 tbset:
table的名字
XXX
end
🍂ipairs遍历
ipairs" 会从table数组(lua的hash表和数组都是用的table)下标1开始,一直遍历到key不连续为止(即下表非数字)"
for key, value in ipairs(tbtest) do
XXX
end
🍂i=1,#xxx遍历
这种遍历依赖于#xxx获取到的长度,"通常建议用于数组型table,且下表连续"。
否则可能表现不一致。或者容易取出nil值
for i=1, #(tbtest) do
XXX
end
🌟代码演示
tbtest1 = {
a = "a",
[1] = "1",
b = "b",
c = "c",
[2] = "2",
[4] = "4",
}
print("pairs(tbtest1)")
for key, value in pairs(tbtest1) do
print(tostring(key)..":"..tostring(value))
end
print("ipairs(tbtest1)")
for key, value in ipairs(tbtest1) do
print(tostring(key)..":"..tostring(value))
end
print("i=1,#(tbtest1)")
for i=1, #tbtest1 do
print(tostring(i)..":"..tostring(tbtest1[i]))
end
🍂pairs 和 ipairs区别
"常用用法: pairs用于迭代元素,ipairs用于迭代数组"
"pairs:"
1.pairs可以遍历表中所有的key,并且除了迭代器本身以及遍历表本身还可以返回nil;
2.pairs 遍历 table时,是乱序的, 并且无法用 # 求出其大小
3.用pairs遍历数组,跳过了nil,可以访问到nil后面的元素
-----------------------------------------------------------------------------------------------------------------------------------------------------------
"ipairs:"
1.ipairs则不能返回nil,只能返回数字0,如果遇到nil则退出; 它只能遍历到表中出现的第一个不是整数的key
二、如何打印出脚本自身的名称
print(arg[0]) --文件名存储在arg[0]上
三、Lua运算符
运算符是一个特殊的符号,用于告诉解释器执行特定的数学或逻辑运算
Lua提供了以下几种运算符类型:
* 算术运算符
* 关系运算符
* 逻辑运算符
* 其他运算符
🔸算术运算符
操作符 | 描述 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 (用作除法运算,计算结果包含小数部分) |
% | 取余 |
^ | 乘幂 |
- | 负号 |
// | 整除运算符 (用作整除运算,计算结果不包含小数部分) |
🌟代码演示
a=9;
b=2;
print(a+b) //11
print(a-b) //7
print(a*b) //18
print(a/b) //4.5
print(a%b) //1
print(a^b) //81
print(-a) //-9
print(a//b) //4
/ 用作除法运算,计算结果包含小数部分,// 用作整除运算,计算结果不包含小数部分
🔸关系运算符
操作符 | 描述 | 实例 |
---|---|---|
== | 等于,检测两个值是否相等,相等返回 true,否则返回 false | (A == B) 为 false |
~= | 不等于,检测两个值是否相等,不相等返回 true,否则返回 false | (A ~= B) 为 true |
> | 大于,如果左边的值大于右边的值,返回 true,否则返回 false | (A > B) 为 false |
< | 小于,如果左边的值大于右边的值,返回 false,否则返回 true | (A < B) 为 true |
>= | 大于等于,如果左边的值大于等于右边的值,返回 true,否则返回false | (A >= B) 返回false |
<= | 小于等于, 如果左边的值小于等于右边的值,返回 true,否则返回 false | (A <= B) 返回true |
🔸逻辑运算符
操作符 | 描述 | 实例 |
---|---|---|
and | 逻辑与操作符。 若 A 为 false,则返回 A,否则返回 B。 | (A and B) 为 false |
or | 逻辑或操作符。 若 A 为 true,则返回 A,否则返回 B。 | (A or B) 为 true |
not | 逻辑非操作符。与逻辑运算结果相反,如果条件为 true,逻辑非为 false。 | not(A and B) 为true |
🔸其他运算符
操作符 | 描述 | 实例 |
---|---|---|
… | 连接两个字符串 | a…b ,其中 a 为 “Hello " , b 为 “World”, 输出结果为"Hello World” |
# | 一元运算符,返回字符串或表的长度。 | #“Hello” 返回 5 |
🔸运算符优先级
四、math库
math.abs (x):返回 x 的绝对值
----------------------------------------------------------------------------------------------------------------------------------
math.acos (x):返回 x 的余弦(用弧度表示)
----------------------------------------------------------------------------------------------------------------------------------
math.asin (x):返回 x 的反正弦值(用弧度表示)
----------------------------------------------------------------------------------------------------------------------------------
math.atan (y [, x]):返回 y/x 的反正切值(用弧度表示)
----------------------------------------------------------------------------------------------------------------------------------
math.deg (x):将角 x 从弧度转换为角度
----------------------------------------------------------------------------------------------------------------------------------
math.exp (x):返回 ex 的值 (e 为自然对数的底)
----------------------------------------------------------------------------------------------------------------------------------
"math.ceil (x):返回不小于 x 的最小整数值 //变大
如: math.ceil(3.3) -> 4
math.ceil(-3.3) -> -3
----------------------------------------------------------------------------------------------------------------------------------
"math.floor (x):返回不大于 x 的最大整数值 //变小
如: math.floor(3.3) -> 3
math.floor(-3.3) -> -4
----------------------------------------------------------------------------------------------------------------------------------
"math.fmod (x, y):取模运算 (返回x/y的余数)
如: math.fmod(16,3) -> 1
----------------------------------------------------------------------------------------------------------------------------------
"math.modf(): 返回取整后的值以外,函数 modf 还会返回小数部分作为第二个结果
如: math.modf(15.6) -> 15 0.6
----------------------------------------------------------------------------------------------------------------------------------
math.log (x [, base]):返回以指定底的 x 的对数。 默认的 base 是 e (因此此函数返回 x 的自
然对数)
----------------------------------------------------------------------------------------------------------------------------------
math.max (x, ···):返回参数中最大的值
----------------------------------------------------------------------------------------------------------------------------------
math.maxinteger:最大值的整数
----------------------------------------------------------------------------------------------------------------------------------
math.min (x, ···):返回参数中最小的值
----------------------------------------------------------------------------------------------------------------------------------
math.mininteger:最小值的整数
----------------------------------------------------------------------------------------------------------------------------------
math.pi:π 的值
----------------------------------------------------------------------------------------------------------------------------------
math.rad (x):将角 x 从角度转换为弧度
----------------------------------------------------------------------------------------------------------------------------------
math.random ([m [, n]])
当不带参数调用时, 返回一个 [0,1) 区间内一致分布的浮点伪随机数。 当以两个整数 m 与 n 调用时,
math.random 返回一个 [m, n] 区间 内一致分布的整数伪随机数。 (值 n-m 不能是负数,且必须在
Lua 整数的表示范围内。) 调用 math.random(n) 等价于 math.random(1,n)
----------------------------------------------------------------------------------------------------------------------------------
math.sin (x):返回 x 的正弦值(假定参数是弧度)
----------------------------------------------------------------------------------------------------------------------------------
math.sqrt (x):返回 x 的平方根(你也可以使用乘方 x^0.5 来计算这个值。)
----------------------------------------------------------------------------------------------------------------------------------
math.tan (x):返回 x 的正切值(假定参数是弧度)
----------------------------------------------------------------------------------------------------------------------------------
math.tointeger (x):如果 x 可以转换为一个整数, 返回该整数。 否则返回 nil
----------------------------------------------------------------------------------------------------------------------------------
math.pow(x, y):得到x的y次方
五、字符串操作方法
🔹string.upper(argument)
"string.upper(argument): 字符串全部转为大写字母"
demo="abcd";
print(string.upper(demo))
🔹string.lower(argument)
"string.lower(argument) : 字符串全部转为小写字母"
demo="ABCD";
print(string.lower(demo))
🔹string.gsub(mainString,findString,replaceString,num)
"string.gsub(mainString,findString,replaceString,num): 在字符串中替换"
"mainString: 要操作的字符串
"findString: 被替换的字符
"replaceString: 要替换的字符
"num: 替换次数(可以忽略,则全部替换)
------------------------------------------------------------------------------------------------------------------------------
a="acvbc"
b=string.gsub(a,"c","e")
print(b)
print("---------------------------------------------")
print(string.gsub("aabaca","a","d"))
print(string.gsub("aabaca","a","d",2))
🔹string.find (str, substr, [init, [plain]])
"string.find (str, substr, [init, [plain]]): (在字符串里面找子字符串)
"在一个指定的目标字符串 str 中搜索指定的内容 substr,如果找到了一个匹配的子串,就会返回这
个子串的起始索引和结束索引,不存在则返回 nil
"init 指定了搜索的起始位置,默认为 1,如果为负数表示从右往左开始寻找子字符串
"plain 表示是否以正则表达式匹配
--------------------------------------------------------------------------------------------------------------------------------
print(string.find("abccda","a"))
print(string.find("abccda","a",-1)) -- 从右往左找
🔹string.reverse(arg)
"string.reverse(arg): 字符串反转"
--------------------------------------------------------------------------------------------------------------------------------
print(string.reverse("abc"))
🔹string.format(…)
"string.format(...): 返回一个类似printf的格式化字符串"
🔹string.char(arg)
"string.char(arg): 将整型数字转成字符并连接"
--------------------------------------------------------------------------------------------------------------------------------
print(string.char(97,98,99,100)) //abcd
🔹string.byte(arg[,int])
" string.byte(arg[,int]) : 转换字符为整数值(可以指定某个字符,默认第一个字符) "
--------------------------------------------------------------------------------------------------------------------------------
print(("a"):byte()) -- 得到字符的ascii码值
print(string.byte("abcd",2)) -- 指定转数字,将b字符转数字
print(string.byte("abcd")) -- 默认将第一个字符转数字
🔹string.len(arg)
"string.len(arg): 计算字符串长度"
-- #也可以计算长度
--------------------------------------------------------------------------------------------------------------------------------
a="abcas";
print(#a)
print(string.len(a))
🔹string.rep(string, n)
"string.rep(string, n): 返回字符串string的n个拷贝"
---------------------------------------------------------------------------------
-----------------------------------------------
print(string.rep("abc",2))
🔹…
"..:链接两个字符串"
--------------------------------------------------------------------------------------------------------------------------------
print("abc".. "hda")
🔹string.sub()
"string.sub(s, i [, j]): 截取字符串"
s:要截取的字符串
i:截取开始位置
j:截取结束位置,默认为 -1,最后一个字符
--------------------------------------------------------------------------------------------------------------------------------
print(string.sub("abc",1,2))
🔹string.match
"string.match: 返回的是目标字符串中与模式相匹配的那部分子串"
如: print(string.match("abcdaa","a")) -- a 返回的第一个
🔹预置的字符分类及其对应的含义
字符 | 含义 |
---|---|
. | 任意字符 |
%a | 字母 |
%c | 控制字符 |
%d | 数字 |
%g | 除空格外的可打印字符 |
%l | 小写字母 |
%p | 标点符号 |
$s | 空白字符 |
$U | 大写字母 |
%w | 字母和数字 |
%x | 十六进制数字 |
作者:KJ.JK
文章对你有所帮助的话,欢迎给个赞或者 star,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习