lua脚本精灵stringformat函数的用法.docx

上传人:b****2 文档编号:24224541 上传时间:2023-05-25 格式:DOCX 页数:18 大小:24.16KB
下载 相关 举报
lua脚本精灵stringformat函数的用法.docx_第1页
第1页 / 共18页
lua脚本精灵stringformat函数的用法.docx_第2页
第2页 / 共18页
lua脚本精灵stringformat函数的用法.docx_第3页
第3页 / 共18页
lua脚本精灵stringformat函数的用法.docx_第4页
第4页 / 共18页
lua脚本精灵stringformat函数的用法.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

lua脚本精灵stringformat函数的用法.docx

《lua脚本精灵stringformat函数的用法.docx》由会员分享,可在线阅读,更多相关《lua脚本精灵stringformat函数的用法.docx(18页珍藏版)》请在冰豆网上搜索。

lua脚本精灵stringformat函数的用法.docx

lua脚本精灵stringformat函数的用法

string.format()函数的用法

lua中有很多字符串操作的函数,string.format()就是其中的一个,顾名思义,format是格式化的意思,则string.format()功能就是格式化一个字符串。

我们知道lua中可以用".."连接字符串,可以起到一部分格式化字符串的作用,但是如果字符串较长或者有特殊的格式转换操作(如十六进制转换),用".."就会很繁琐且可读性差。

用string.format()就是一个很好的解决方案。

函数定义

string.format()第一个参数为字符串格式,后面的参数可以任意多个,用于填充第一个参数中的格式控制符,最后返回完整的格式化后的字符串。

格式控制符以%开头,常用的有以下几种 

%s    -  接受一个字符串并按照给定的参数格式化该字符串

%d  -接受一个数字并将其转化为有符号的整数格式

%f    -  接受一个数字并将其转化为浮点数格式(小数),默认保留6位小数,不足位用0填充

%x   - 接受一个数字并将其转化为小写的十六进制格式

%X   - 接受一个数字并将其转化为大写的十六进制格式

示例:

1.str=string.format("字符串:

%s\n整数:

%d\n小数:

%f\n十六进制数:

%X","qweqwe",1,0.13,348)

2.print(str)

输出结果:

1.字符串:

qweqwe

2.整数:

1

3.小数:

0.130000

4.十六进制数:

15C

5.

%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.1416

3.d=5;m=11;y=1990

4.print(string.format("%02d/%02d/%04d",d,m,y))

5.      -->05/11/1990

6.tag,title="h1","atitle"

7.print(string.format("<%s>%s",tag,title,tag))

8.      -->

atitle

第一个例子,%.4f代表小数点后面有4位小数的浮点数。

第二个例子%02d代表以固定的两位显示十进制数,不足的前面补0。

而%2d前面没有指定0,不足两位时会以空白补足。

对于格式串部分指示符得详细描述清参考lua手册,或者参考C手册,因为Lua调用标准C的printf函数来实现最终的功能。

以下是一些例子:

1.string.format("%%c:

%c",83)        输出S

2.string.format("%+d",17.0)          输出+17

3.string.format("%05d",17)          输出00017

4.string.format("%o",17)            输出21

5.string.format("%u",3.14)          输出3

6.string.format("%x",13)            输出d

7.string.format("%X",13)            输出D

8.string.format("%e",1000)          输出1.000000e+03

9.string.format("%E",1000)          输出1.000000E+03

10.string.format("%6.3f",13)          输出13.000

11.string.format("%q","One\nTwo")      输出"One\

12.                            Two"

13.string.format("%s","monkey")        输出monkey

14.string.format("%10s","monkey")      输出  monkey

15.string.format("%5.3s","monkey")      输出  mon

 

%a

abbreviatedweekdayname(e.g.,Wed)

%A

fullweekdayname(e.g.,Wednesday)

%b

abbreviatedmonthname(e.g.,Sep)

%B

fullmonthname(e.g.,September)

%c

dateandtime(e.g.,09/16/9823:

48:

10)

%d

dayofthemonth(16)[01-31]

%H

hour,usinga24-hourclock(23)[00-23]

%I

hour,usinga12-hourclock(11)[01-12]

%M

minute(48)[00-59]

%m

month(09)[01-12]

%p

either"am"or"pm"(pm)

%S

second(10)[00-61]

%w

weekday(3)[0-6=Sunday-Saturday]

%x

date(e.g.,09/16/98)

%X

time(e.g.,23:

48:

10)

%Y

fullyear(1998)

%y

two-digityear(98)[00-99]

%%

thecharacter'%'

 

一、时间的三种格式

1、用数值表示时间值 

用数字值来表示时间值,

实际上时间值的本质就是一个数字值。

例如:

d=1131286477 

这里的1131286477是一个以秒为单位的格林威志时间(gmt),注意不同时区的时差

2、用字符串表示时间 

用字符串来来表示时间。

例如:

d="2005-11-0622:

18:

30" --2005年11月6日22点18分30秒

d="11/06/200522:

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参数,指定一个时间,返回时间的数值格式.

例如:

localtab={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函数的第二个参数指定一个时间数值。

例如:

localtab=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("todayis%A,in%B") )

print( os.date("%x",906000490) )

--输出类似这样的字符串09/16/1998

1、获取当前时间的字符串(string)格式

如果不指定os.date的第二个参数,则返回当前时间的table表示格式

例如:

str=os.date("*x")

2、通过时间数值,获取指定时间的(string)格式

通过os.date函数的第二个参数指定一个时间数值。

例如:

str=os.date("*x",1131286710)

3、获取时间的指定部份的(string)格式

例如:

str=os.date("%M") --返回当前时间分钟部份的字符串格式

五、时间数值与字符串之间的转换

请参考:

string.timestring.ftime函数用法

六、计算时间值间隔

int=os.difftime(t2,t1);

t2,t1都是数值格式的时间值,返回值也是一个数值表示间隔的时间。

参数以及返回的时间值都是以秒为单位的数值格式。

localtab={year=2005,month=11,day=6,hour=22,min=18,sec=30,isdst=false}

t1=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()的返回值并不完全一致。

 

lua math库(2012-05-1817:

26:

28)

转载

标签:

游戏

分类:

Lua

正文开始

atan2、sinh、cosh、tanh这4个应该用不到。

函数名

描述

示例

结果

pi

圆周率

math.pi

3.1415926535898

abs

取绝对值

math.abs(-2012)

2012

ceil

向上取整

math.ceil(9.1)

10

floor

向下取整

math.floor(9.9)

9

max

取参数最大值

math.max(2,4,6,8)

8

min

取参数最小值

math.min(2,4,6,8)

2

pow

计算x的y次幂

math.pow(2,16)

65536

sqrt

开平方

math.sqrt(65536)

256

mod

取模

math.mod(65535,2)

1

modf

取整数和小数部分

math.modf(20.12)

20  0.12

randomseed

设随机数种子

math.randomseed(os.time())

 

random

取随机数

math.random(5,90)

5~90

rad

角度转弧度

math.rad(180)

3.1415926535898

deg

弧度转角度

math.deg(math.pi)

180

exp

e的x次方

math.exp(4)

54.598150033144

log

计算x的自然对数

math.log(54.598150033144)

4

log10

计算10为底,x的对数

math.log10(1000)

3

frexp

将参数拆成x*(2^y)的形式

math.frexp(160)

0.625   8

ldexp

计算x*(2^y)

math.ldexp(0.625,8)

160

sin

正弦

math.sin(math.rad(30))

0.5

cos

余弦

math.cos(math.rad(60))

0.5

tan

正切

math.tan(math.rad(45))

1

asin

反正弦

math.deg(math.asin(0.5))

30

acos

反余弦

math.deg(math.acos(0.5))

60

atan

反正切

math.deg(math.atan

(1))

45

 

lua string 库(2012-09-1209:

25:

53)

转载

标签:

杂谈

正文开始

--lua中字符串索引从前往后是1,2,……,从后往前是-1,-2……。

--string库中所有的function都不会直接操作字符串,只返回一个结果。

--------------------------------------------------------------------------------------------------

【基本函数】

 

函数

描述

示例

结果

len

计算字符串长度

string.len("abcd")

4

rep

返回字符串s的n个拷贝

string.rep("abcd",2)

abcdabcd

lower

返回字符串全部字母大写

string.lower("AbcD")

abcd

upper

返回字符串全部字母小写

string.upper("AbcD")

ABCD

format

返回一个类似printf的格式化字符串

string.format("thevalueis:

%d",4)

thevalueis:

4

sub

returnssubstringfromindexitojofs

string.sub("abcd",2)

bcd

string.sub("abcd",-2)

cd

string.sub("abcd",2,-2)

bc

string.sub("abcd",2,3)

bc

find

在字符串中查找

string.find("cdcdcdcd","ab")

nil

string.find("cdcdcdcd","cd")

12

string.find("cdcdcdcd","cd",7)

78

gsub

在字符串中替换

string.gsub("abcdabcd","a","z");

zbcdzbcd2

string.gsub("aaaa","a","z",3);

zzza3

byte

返回字符的整数形式

string.byte("ABCD",4)

68

char

将整型数字转成字符并连接

string.char(97,98,99,100)

abcd

--------------------------------------------------------------------------------------------------

【基本模式串】

字符类

描述

示例

结果

.

任意字符

string.find("",".")

nil

%s

空白符

string.find("abcd","%s%s")

34

%S

非空白符

string.find("abcd","%S%S")

12

%p

标点字符

string.find("ab,.cd","%p%p")

34

%P

非标点字符

string.find("ab,.cd","%P%P")

12

%c

控制字符

string.find("abcd\t\n","%c%c")

56

%C

非控制字符

string.find("\t\nabcd","%C%C")

34

%d

数字

string.find("abcd12","%d%d")

56

%D

非数字

string.find("12abcd","%D%D")

34

%x

十六进制数字

string.find("efgh","%x%x")

12

%X

非十六进制数字

string.find("efgh","%X%X")

34

%a

字母

string.find("AB12","%a%a")

12

%A

非字母

string.find("AB12","%A%A")

34

%l

小写字母

string.find("ABab","%l%l")

34

%L

大写字母

string.find("ABab","%L%L")

12

%u

大写字母

string.find("ABab","%u%u")

12

%U

非大写字母

string.find("ABab","%U%U")

34

%w

字母和数字

string.find("a1()","%w%w")

12

%W

非字母非数字

string.find("a1()","%W%W")

34

--------------------------------------------------------------------------------------------------

【转义字符%】

字符类

描述

示例

结果

%

转义字符

string.find("abc%..","%%")

44

string.find("abc..d","%.%.")

45

--------------------------------------------------------------------------------------------------

【用[]创建字符集,"-"为连字符,"^"表示字符集的补集】

字符类

描述

示例

结果

[01]

匹配二进制数

string.find("32123","[01]")

33

[AB][CD]

匹配AC、AD、BC、BD

string.find("ABCDEF","[AB][CD]")

23

[[]]

匹配一对方括号[]

string.find("ABC[]D","[[]]")

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1