Lua系统函数

来源:互联网 发布:电子相册制作软件宝宝 编辑:程序博客网 时间:2024/06/10 12:07

table:
t = {10, 20, 30}
table.insert(t, 1, 15)
t 就变成了{15, 10, 20, 30}
如果没有第二个参数,就自动添加到table末尾
table.remove(t, 1)
t 就变回了{10, 20, 30}
table.sort(tablename,sortfunc)
排序,第二个参数是一个函数有两个参数,返回true或false,true的话第一个参数在前
table.concat()
将一个字符串table连接成一个完整的字符串,第二个可选参数填写连接符,第三第四个可选参数用于指定第一个和最后一个要连接的字符串索引
table.maxn(table)
返回指定table中所有正数key值中最大的key值. 如果不存在key值为正数的元素, 则返回0. 此函数不限于table的数组部分
table.foreachi(table, function(i, v))
会期望一个从 1(数字 1)开始的连续整数范围,遍历table中的key和value逐对进行function(i, v)操作
table.foreach(table, function(i, v))
与foreachi不同的是,foreach会对整个表进行迭代
table.getn(table)
返回table中元素的个数
table.setn(table, nSize)
设置table中的元素个数

math:
常用的数学库如:sin.asin.deg…
随机数:math.random()无参数时生成[0,1)的随机数,整数参数的话生成[1,参数]的整数随机数;math.randomseed(seed) 使用种子生成随机数

string:
lua中的字符串都是不可变的,以下函数都是返回一个新字符串
string.upper(s) 等价于 s:supper()
string.upper(s) 返回字符串s转换成大写的副本
string.lower(s) 返回字符串s转换成小写的副本
string.len(s) 返回字符串s的长度
string.rep(s,n) 返回字符串s重复n此的结果
string.sub(s,i,j) 从字符串s中提取第i个到第j个字符(负数索引代表从字符串尾部开始计算,-1代表左后一个字符,-2代表倒数第二个),j可不填,不填默认-1
string.byte(s, i) 返回字符串s中第i个字符的内部数值表示
string.char(num) 将数值转化成对应的字符
string.formate()格式化字符,见例1,%d 十进制数,%x 十六进制,%o 八进制数,%f浮点数,%s字符串
模式相关:
string.find(s, s1, index)返回两个值,匹配到的起始索引和结尾索引,如果没有找到,返回nil;此方法可以跟string.sub配合来提取目标字符串.index可忽略,表示从第几个位置开始搜索
string.match() 参数和find类似,返回与模式相匹配的那部分子串,此函数还有捕获功能,即在模式中添加(),见例子。另外string.match(s, “()匹配字符()”)相当于string.find(s,匹配字符)
string.gsub(s, s1, s2) 参数为目标字符串,模式,替换字符串。作用是将目标字符串中所有出现模式的地方替换为目标字符串。可选的第四个参数,限制替换的次数。返回两个值,第一个是修改过的字符串,第二个是统计替换的次数。其中第三个参数也可以是一个函数或者一个table,函数的话gsub会在每次找到匹配时调用,并替换它的返回值,将捕获到的内容作为参数传递给这个函数;如果是table的话,会将捕获的内容作为key,查找table中的value
string.gmatch() 返回一个函数,通过这个函数可以遍历到一个字符串中所有出现指定模式的地方,一般用在for循环中。两个参数,第一个是目标字符串,第二个是匹配模式。
模式:
大写表示它们的补集;
[ ]中括号可表示一个字符集,里面填写所有符合的内容,-表示范围,比如八进制数[0-7] ,加上^表示该字符集的补集,如[^0-7]
%%表示%本身,%,.表示.
+*总是匹配最多次,-匹配最少次数(经常是0次)
如果模式以^开头,则它只会匹配目标字符串的开头部分
如果模式以$结尾,那么它只会匹配目标字符串的结尾部分
%b 匹配成对的字符,入%b()匹配一对圆括号和里面的任何内容
%0 表示整个匹配,%1表示匹配第一个捕获的部分,以此类推

例1:
string.format(“pi = %.4f”, math.pi)) –> pi = 3.1416
string.format(“%02d/%02d/%04d”, 5, 11, 1990)) –> 05/11/1990
string.format(“<%s>%s

0 0
原创粉丝点击