Skip to content

常用函数

基础函数

函数名函数功能示例
type(v)用来判断v的类型, 返回字符串"nil", "number", "string", "boolean", "table", "function", "thread", "userdata"
tonumber(e [,base])将字符串转换成数字,把e(必须为数字或者是可以转成数字的字符串)转成10进制数字,base为多少进制(可以为2-36),默认为10tonumber('10')10
tostring(var)将变量转换成字符串,把任意类型的e已适当的方式转成字符串,如果e的原表有__tostring函数,则调用并传入e作为参数,把返回值作为结果返回。math.asin(0.5)0.52359877
isboolean(var)检查是否为boolean类型
isnil(var)检查是否为nil
isstring(var)检查是否为字符串类型
isinteger(var)检查是否为整数类型

数学函数

函数名函数功能示例示例结果
abs取绝对值math.abs(-15)15
acos反余弦函数math.acos(0.5)1.04719755
asin反正弦函数math.asin(0.5)0.52359877
atan2x / y的反正切值math.atan2(90.0, 45.0)1.10714871
atan反正切函数math.atan(0.5)0.4636476095
ceil不小于x的最大整数math.ceil(5.8)6
cosh双曲线余弦函数math.cosh(0.5)1.276259652
cos余弦函数math.cos(0.5)0.87758256
deg弧度转角度math.deg(math.pi)180
exp计算以e为底x次方值math.exp(2)2.718281828
floor不大于x的最大整数math.floor(5.6)5
fmod (mod)取模运算math.mod(14, 5)4
frexp把双精度数val分解为数字部分(尾数)和以2为底的指数n,即val=x*2nmath.frexp(10.0)0.625 4
ldexp计算value * 2的n次方math.ldexp(10.0, 3)80 = 10 * (2 ^3)
log10计算以10为基数的对数math.log10(100)2
log计算一个数字的自然对数math.log(2.71)0.9969
max取得参数中最大值math.max(2.71, 100, -98, 23)100
min取得参数中最小值math.min(2.71, 100, -98, 23)-98
modf把数分为整数和小数math.modf(15.98)15 98
pow把数分为整数和小数math.pow(2, 5)32
rad角度转弧度math.rad(180)3.141592654
random获取随机数math.random(1, 100)在使用math.random函数之前必须使用此函数设置随机数种子
randomseed设置随机数种子math.randomseed(os.time())0.5210953
sinh双曲线正弦函数math.sinh(0.5)0.5
sin正弦函数math.sin(math.rad(30))15
sqrt开平方函数math.sqrt(16)4
tanh双曲线正切函数math.tanh(0.5)0.46211715
tan正切函数math.tan(0.5)0.5463024

字符串函数

序号方法 & 用途
1string.upper(argument):
字符串全部转为大写字母。
2string.lower(argument):
字符串全部转为小写字母。
3string.sub(s, i [, j]):
s 为要截取的字符串,i 为截取开始位置,j 为截取结束位置,默认为 -1,最后一个字符。
4string.gsub(mainString,findString,replaceString,num)
在字符串中替换。
mainString 为要操作的字符串, findString 为被替换的字符,replaceString 要替换的字符,num 替换次数(可以忽略,则全部替换),如:
string.gsub("aaaa","a","z",3);
zzza    3
5string.find (str, substr, [init, [plain]])
在一个指定的目标字符串 str 中搜索指定的内容 substr,如果找到了一个匹配的子串,就会返回这个子串的起始索引和结束索引,不存在则返回 nil。
init 指定了搜索的起始位置,默认为 1,可以一个负数,表示从后往前数的字符个数。
plain 表示是否使用简单模式,默认为 false,true 只做简单的查找子串的操作,false 表示使用使用正则模式匹配。
以下实例查找字符串 "Lua" 的起始索引和结束索引位置:
string.find("Hello Lua user", "Lua", 1)
7 9
6string.reverse(arg)
字符串反转
string.reverse("Lua")
auL
7string.format(...)
返回一个类似printf的格式化字符串
string.format("the value is:%d",4)
the value is:4
8string.char(arg) 和 string.byte(arg[,int])
char 将整型数字转成字符并连接, byte 转换字符为整数值(可以指定某个字符,默认第一个字符)
string.char(97,98,99,100)
abcd
string.byte("ABCD",4)
68
string.byte("ABCD")
65
9string.len(arg)
计算字符串长度
string.len("abc")
3
10string.rep(string, n)
返回字符串string的n个拷贝
string.rep("abcd",2)
abcdabcd
11..
链接两个字符串
print("www.ai-v".."ision.com")
www.ai-vision.com
12string.gmatch(str, pattern)
返回一个迭代器函数,每一次调用这个函数,返回一个在字符串 str 找到的下一个符合 pattern 描述的子串。如果参数 pattern 描述的字符串没有找到,迭代函数返回nil
for word in string.gmatch("Hello ai vision", "%a+") do print(word) end
Hello
ai
vision
13string.match(str, pattern, init)
string.match()只寻找源字串str中的第一个配对. 参数init可选, 指定搜寻过程的起点, 默认为1。
在成功配对时, 函数将返回配对表达式中的所有捕获结果; 如果没有设置捕获标记, 则返回整个配对字符串. 当没有成功的配对时, 返回nil
string.match("I have 2 questions for you.", "%d+ %a+")
2 questions
string.format("%d, %q", string.match("I have 2 questions for you.", "(%d+) (%a+)"))
2, "questions"

AI-Vision,让3D测量更简单