lua脚本精灵string.at()函数的用法.doc_第1页
lua脚本精灵string.at()函数的用法.doc_第2页
lua脚本精灵string.at()函数的用法.doc_第3页
lua脚本精灵string.at()函数的用法.doc_第4页
lua脚本精灵string.at()函数的用法.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

string.format()函数的用法lua中有很多字符串操作的函数,string.format()就是其中的一个,顾名思义,format是格式化的意思,则string.format()功能就是格式化一个字符串。 我们知道lua中可以用.连接字符串,可以起到一部分格式化字符串的作用,但是如果字符串较长或者有特殊的格式转换操作(如十六进制转换),用.就会很繁琐且可读性差。用string.format()就是一个很好的解决方案。函数定义string.format() 第一个参数为字符串格式,后面的参数可以任意多个,用于填充第一个参数中的格式控制符,最后返回完整的格式化后的字符串。 格式控制符以%开头,常用的有以下几种%s -接受一个字符串并按照给定的参数格式化该字符串%d - 接受一个数字并将其转化为有符号的整数格式%f -接受一个数字并将其转化为浮点数格式(小数),默认保留6位小数,不足位用0填充%x -接受一个数字并将其转化为小写的十六进制格式%X -接受一个数字并将其转化为大写的十六进制格式示例:1. str = string.format(字符串:%sn整数:%dn小数:%fn十六进制数:%X,qweqwe,1,0.13,348)2. print(str)输出结果:1. 字符串:qweqwe2. 整数:13. 小数:0.1300004. 十六进制数:15C5.%X的特殊用法%08X 中间的第2个数字格式化成多少位,第1个数字表示不足位数时的填充数,通常用0填充。例如:1. str = string.format(0x%08X,348)2. print(str)前面的0x只是个普通的字符串,可有可无,因为我们一般在十六进制数前面加上0x来表明这是一个十六进制数,所以这里才加了个0x,没有其他特殊意义。输出结果:1. 0x0000015C%x的特殊用法与%X一样%f的特殊用法%0.3f 中的小数点右边的数字表示小数点后面保留多少位,小数点前面的数字表示位数不足时的填充数,通用用0填充。例如:格式化一个小数,保留2位小数1. str = string.format(%0.2f,34.2344)2. print(str)输出结果:1. 34.23更多用法 前面是常用的格式控制符,string.format()还有很多其他的格式控制符,更详细的信息可以参考官方文档。%c - 接受一个数字, 并将其转化为ASCII码表中对应的字符%d, %i - 接受一个数字并将其转化为有符号的整数格式%o - 接受一个数字并将其转化为八进制数格式%u - 接受一个数字并将其转化为无符号整数格式%x - 接受一个数字并将其转化为十六进制数格式, 使用小写字母%X - 接受一个数字并将其转化为十六进制数格式, 使用大写字母%e - 接受一个数字并将其转化为科学记数法格式, 使用小写字母e%E - 接受一个数字并将其转化为科学记数法格式, 使用大写字母E%f - 接受一个数字并将其转化为浮点数格式%g(%G) - 接受一个数字并将其转化为%e(%E, 对应%G)及%f中较短的一种格式%q - 接受一个字符串并将其转化为可安全被Lua编译器读入的格式%s - 接受一个字符串并按照给定的参数格式化该字符串为进一步细化格式, 可以在%号后添加参数. 参数将以如下的顺序读入:(1) 符号: 一个+号表示其后的数字转义符将让正数显示正号. 默认情况下只有负数显示符号.(2) 占位符: 一个0, 在后面指定了字串宽度时占位用. 不填时的默认占位符是空格.(3) 对齐标识: 在指定了字串宽度时, 默认为右对齐, 增加-号可以改为左对齐.(4) 宽度数值(5) 小数位数/字串裁切: 在宽度数值后增加的小数部分n, 若后接f(浮点数转义符, 如%6.3f)则设定该浮点数的小数只保留n位, 若后接s(字符串转义符, 如%5.3s)则设定该字符串只显示前n位.在这些参数的后面则是上述所列的转义码类型(c, d, i, f, .).1. print(string.format(pi = %.4f, PI)2. - pi = 3.14163. d = 5; m = 11; y = 19904. print(string.format(%02d/%02d/%04d, d, m, y)5. - 05/11/19906. tag, title = h1, a title7. print(string.format(%s, tag, title, tag)8. - a title第一个例子,%.4f代表小数点后面有4位小数的浮点数。第二个例子%02d代表以固定的两位显示十进制数,不足的前面补0。而%2d前面没有指定0,不足两位时会以空白补足。对于格式串部分指示符得详细描述清参考lua手册,或者参考C手册,因为Lua调用标准C的printf函数来实现最终的功能。以下是一些例子:1. string.format(%c: %c, 83) 输出S2. string.format(%+d, 17.0) 输出+173. string.format(%05d, 17) 输出000174. string.format(%o, 17) 输出215. string.format(%u, 3.14) 输出36. string.format(%x, 13) 输出d7. string.format(%X, 13) 输出D8. string.format(%e, 1000) 输出1.000000e+039. string.format(%E, 1000) 输出1.000000E+0310. string.format(%6.3f, 13) 输出13.00011. string.format(%q, OnenTwo) 输出One12. Two13. string.format(%s, monkey) 输出monkey14. string.format(%10s, monkey) 输出 monkey15. string.format(%5.3s, monkey) 输出mon%aabbreviated weekday name (e.g., Wed)%Afull weekday name (e.g., Wednesday)%babbreviated month name (e.g., Sep)%Bfull month name (e.g., September)%cdate and time (e.g., 09/16/98 23:48:10)%dday of the month (16) 01-31%Hhour, using a 24-hour clock (23) 00-23%Ihour, using a 12-hour clock (11) 01-12%Mminute (48) 00-59%mmonth (09) 01-12%peither am or pm (pm)%Ssecond (10) 00-61%wweekday (3) 0-6 = Sunday-Saturday%xdate (e.g., 09/16/98)%Xtime (e.g., 23:48:10)%Yfull year (1998)%ytwo-digit year (98) 00-99%the character %一、时间的三种格式1、用数值表示时间值用数字值来表示时间值,实际上时间值的本质就是一个数字值。例如:d = 1131286477这里的 1131286477 是一个以秒为单位的 格林威志时间(gmt),注意不同时区的时差2、用字符串表示时间用字符串来来表示时间。例如:d = 2005-11-06 22:18:30-2005年11月6日 22点18分30秒d = 11/06/2005 22:18:30-即2005年11月6日 22点18分30秒3、时间的列表格式用table对象来表示时间例如:d = year=2005, month=11, day=6, hour=22,min=18,sec=30,isdst=false-同样表示2005年11月6日 22点18分30秒,其中isdst=false表示不使用夏令时我们可以这样访问时间列表 d.year = 2005;二、取得数值(number)格式的时间值time = os.time()返回一个标准的number(数值)格式的时间值,这也是最原始的时间值os.time()返回的时间是以秒为单位的。1、获取当前时间数值time = os.time();-如果没有指定任何参数,则返回当前时间2、通过table参数指定时间,获取指定的时间数值time = os.time(tab);通过一个table参数,指定一个时间,返回时间的数值格式.例如:local tab = year=2005, month=11, day=6, hour=22,min=18,sec=30,isdst=false-year表示年,month表示月,day表示日期,hour表示小时,min表示分钟,sec表示秒,isdst表示是否夏令时time = os.time(tab)-返回值为1131286710三、取得列表(table)格式的时间tab = os.date(*t,time)可以将一个数值格式的时间转换为字符串或者列表其中第一个参数指定返回的格式,如果第一个参数指定为*t 则返回一个table格式的时间。第二个参数指定一个时间数值(以秒为单位)1、获取当前时间的table格式tab = os.date(*t)如果不指定os.date的第二个参数,则返回当前时间的table表示格式2、通过时间数值,获取指定时间的table格式tab = os.date(*t, time)通过os.date函数的第二个参数指定一个时间数值。例如:local tab = os.date(*t, 1131286710);-返回值 tab 的数据 year=2005, month=11, day=6, hour=22,min=18,sec=30-year表示年,month表示月,day表示日期,hour表示小时,min表示分钟,sec表示秒,isdst表示是否夏令时-tab成包括一些其他的成员 tab.yday 表示一年中的第几天 tab.wday 表示星期几(星期天为1)time = os.time(tab)-返回值为1131286710四、取得时间的字符串(string)格式tab = os.date(format,time)实际上与取得table格式的时间一样,同样是使用os.date参数,不同的是第一个参数如果第一个参数不是*t os.date返回字符串关于format参数使用的格式化语法,请参考:string.ftime格式化语法os.date 的用法与string.ftime完全相同例如:win.consoleOpen()print( os.date(today is %A, in %B) )print( os.date(%x, 906000490) )-输出类似这样的字符串 09/16/19981、获取当前时间的字符串(string)格式如果不指定os.date的第二个参数,则返回当前时间的table表示格式例如:str= os.date(*x)2、通过时间数值,获取指定时间的(string)格式通过os.date函数的第二个参数指定一个时间数值。例如:str= os.date(*x,1131286710)3、获取时间的指定部份的(string)格式例如:str = os.date(%M)-返回当前时间分钟部份的字符串格式五、时间数值与字符串之间的转换请参考:string.time string.ftime 函数用法六、计算时间值间隔int = os.difftime(t2,t1);t2,t1都是数值格式的时间值,返回值也是一个数值表示间隔的时间。参数以及返回的时间值都是以秒为单位的数值格式。local tab = year=2005, month=11, day=6, hour=22,min=18,sec=30,isdst=falset1 = os.time(tab)tab.day = tab.day +1;-前进一天t2 = os.time(tab)int = os.difftime(t2,t1);win.messageBox(int.秒,时间差七、系统时钟int = os.tick();读取系统时钟,以毫秒为单位。表示从系统启动到当前时刻所过去的毫秒数。int = os.clock()读取系统时钟,以秒为单位。表示从系统启动到当前时刻所过去的秒数。注意因为内部实现的差异,os.tick 与 os.clock()的返回值并不完全一致。luamath库 (2012-05-18 17:26:28)转载标签: 游戏分类: Lua正文开始atan2、sinh、cosh、tanh这4个应该用不到。函数名描述示例结果pi圆周率math.pi3.1415926535898abs取绝对值math.abs(-2012)2012ceil向上取整math.ceil(9.1)10floor向下取整math.floor(9.9)9max取参数最大值math.max(2,4,6,8)8min取参数最小值math.min(2,4,6,8)2pow计算x的y次幂math.pow(2,16)65536sqrt开平方math.sqrt(65536)256mod取模math.mod(65535,2)1modf取整数和小数部分math.modf(20.12)20 0.12randomseed设随机数种子math.randomseed(os.time()random取随机数math.random(5,90)590rad角度转弧度math.rad(180)3.1415926535898deg弧度转角度math.deg(math.pi)180expe的x次方math.exp(4)54.598150033144log计算x的自然对数math.log(54.598150033144)4log10计算10为底,x的对数math.log10(1000)3frexp将参数拆成x * (2 y)的形式math.frexp(160)0.625 8ldexp计算x * (2 y)math.ldexp(0.625,8)160sin正弦math.sin(math.rad(30)0.5cos余弦math.cos(math.rad(60)0.5tan正切math.tan(math.rad(45)1asin反正弦math.deg(math.asin(0.5)30acos反余弦math.deg(math.acos(0.5)60atan反正切math.deg(math.atan(1)45luastring库 (2012-09-12 09:25:53)转载标签: 杂谈正文开始-lua中字符串索引从前往后是1,2,,从后往前是-1,-2。-string库中所有的function都不会直接操作字符串,只返回一个结果。-【基本函数】l函数描述示例结果len计算字符串长度string.len(abcd)4rep返回字符串s的n个拷贝string.rep(abcd,2)abcdabcdlower返回字符串全部字母大写string.lower(AbcD)abcdupper返回字符串全部字母小写string.upper(AbcD)ABCDformat返回一个类似printf的格式化字符串string.format(the value is:%d,4)the value is:4subreturns substring from index i to j of sstring.sub(abcd,2)bcdstring.sub(abcd,-2)cdstring.sub(abcd,2,-2)bcstring.sub(abcd,2,3)bcfind在字符串中查找string.find(cdcdcdcd,ab)nilstring.find(cdcdcdcd,cd)1 2string.find(cdcdcdcd,cd,7)7 8gsub在字符串中替换string.gsub(abcdabcd,a,z);zbcdzbcd 2string.gsub(aaaa,a,z,3);zzza 3byte返回字符的整数形式string.byte(ABCD,4)68char将整型数字转成字符并连接string.char(97,98,99,100)abcd-【基本模式串】字符类描述示例结果.任意字符string.find(,.)nil%s空白符string.find(ab cd,%s%s)3 4%S非空白符string.find(ab cd,%S%S)1 2%p标点字符string.find(ab,.cd,%p%p)3 4%P非标点字符string.find(ab,.cd,%P%P)1 2%c控制字符string.find(abcdtn,%c%c)5 6%C非控制字符string.find(tnabcd,%C%C)3 4%d数字string.find(abcd12,%d%d)5 6%D非数字string.find(12abcd,%D%D)3 4%x十六进制数字string.find(efgh,%x%x)1 2%X非十六进制数字string.find(efgh,%X%X)3 4%a字母string.find(AB12,%a%a)1 2%A非字母string.find(AB12,%A%A)3 4%l小写字母string.find(ABab,%l%l)3 4%L大写字母string.find(ABab,%L%L)1 2%u大写字母string.find(ABab,%u%u)1 2%U非大写字母string.find(ABab,%U%U)3 4%w字母和数字string.find(a1(),%w%w)1 2%W非字母非数字string.find(a1(),%W%W)3 4-【转义字符%】字符类描述示例结果%转义字符string.find(abc%.,%)4 4string.find(abc.d,%.%.)4 5-【用创建字符集,-为连字符,表示字符集的补集】字符类描述示例结果01匹配二进制数string.find(32123,01)3 3ABCD匹配AC、AD、BC、BDstring.find(ABCDEF,ABCD)2 3匹配一对方括号string.find(ABCD,)4 51-3匹配数字1-3string.find(312,1-31-31-3)1 3b-d匹配字母b-dstring.find(dbc,b-db-db-d)1 3%s匹配任意非空字符string.find( a ,%s)3 3%d匹配任意非数字字符string.find(123a,%d)4 4%a匹配任意非字母字符string.find(abc1,%a)4 4-【用()进行捕获】字符类描述示例结果()捕获字符串string.find(12ab,(%a%a)3 4 abstring.find(ab12,(%d%d)3 4 12-【模式修饰符】修饰符描述示例结果+表示1个或多个,匹配最多个string.find(aaabbb,(a+b)1 4 aaabstring.find(cccbbb,(a+b)nil-表示0个或多个,匹配最少个string.find(zzxyyy,(xy-)3 3 xstring.find(zzzyyy,(x-y)4 4 y*表示0个或多个,匹配最多个string.find(mmmnnn,(m*n)1 4 mmmbstring.find(lllnnn,(m*n)4 4 n?表示0个或1个string.find(aaabbb,(a?b)3 4 abstring.find(cccbbb,(a?b)4 4 b正文结束table.insert(table, pos, value) table.remove(table, pos) table.concat(table, sep, i, j) table.sort(table, comp)Lua中的table函数库一部分的table函数只对其数组部分产生影响, 而另一部分则对整个table均产生影响. 下面会分开说明.table.concat(table, sep, start, end)concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以指定的分隔符(sep)隔开。除了table外, 其他的参数都不是必须的, 分隔符的默认值是空字符, start的默认值是1, end的默认值是数组部分的总长.sep, start, end这三个参数是顺序读入的, 所以虽然它们都不是必须参数, 但如果要指定靠后的参数, 必须同时指定前面的参数. tbl = alpha, beta, gamma print(table.concat(tbl, :)alpha:beta:gamma print(table.concat(tbl, nil, 1, 2)alphabeta print(table.concat(tbl, n, 2, 3)betagammatable.insert(table, pos, value)table.insert()函数在table的数组部分指定位置(pos)插入值为value的一个元素. pos参数可选, 默认

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论