(1)string字符串


1、字符串连接符".."


使用".."符号可以将两个字符串相连接,等价于C#或Java中的string a + string b,如果“..”两边有一个是数字的话,".."操作符会把数字变成字符串


lua 拼接数组 成字符 lua字符串合并_Lua




输出


lua 拼接数组 成字符 lua字符串合并_Lua_02




2、Lua的字符串包含string库,可以借助string库函数来便捷地使用string


lua 拼接数组 成字符 lua字符串合并_bc_03




输出


lua 拼接数组 成字符 lua字符串合并_Lua_04




3、模式


模式(pattern)是用来替代一种指定集合的分类,比如在c语言中常见的scanf("%d",&a)、printf("%d\n",a)中的"%d"就是一种模式,在程序进行编译时它用于替代所有的int类型。



常用的几种模式

.

所有字符

%a

字母

%c

控制字符

%d

数字

%l

小写字母

%p

标点符号

%s

空白字符(也可以是字符串)

%u

大写字母

%w

字母和数字字符

%x

十六进制数字

%z

内部表示为0的字符




除了这些分类,还有大写字母的分类,大写字母的分类表示了上述分类的补集。




%A

非字母

%C

非控制字符

%D

非数字

%L

非小写字母

%P

非标点符号

%S

非空白字符

%U

非大写字母

%W

非字母和数字字符

%X

非十六进制数字

%Z

内部不表示为0的字符



举些例子


lua 拼接数组 成字符 lua字符串合并_lua 拼接数组 成字符_05




输出(第二行的"12"是gsub方法的第二个返回值,表示替换了12次)


lua 拼接数组 成字符 lua字符串合并_lua 拼接数组 成字符_06




除了上面两个分类,还有一些,它们被称作魔法字符




%(

字符'('

%)

字符')'

%.

字符'.'

%%

字符'%'

%+

字符'+'

%-

字符'-'

%*

字符'*'

%?

字符'?'

%[

字符'['

%]

字符']'

%^

字符'^'

%$

字符'$'



示例


lua 拼接数组 成字符 lua字符串合并_字符串_07




输出


lua 拼接数组 成字符 lua字符串合并_bc_08




4、模式扩展1-字符集


字符集实际上是模式的扩展,在一对方括号内将不同的字符分类或单个字符组合起来,即可创建出属于用户自己的字符分类,这种新的字符分类就是字符集(lua的设计还是相当强大的)。比如字符集"[%a_]"表示同时匹配字母、下划线;字符集"[0-1]"表示匹配二进制数字;字符集"[0-7]"表示匹配八进制数字;字符集"[^0-7]"表示匹配非八进制数字。




示例


lua 拼接数组 成字符 lua字符串合并_bc_09




输出


lua 拼接数组 成字符 lua字符串合并_脚本语言_10




5、模式扩展2-修饰符


lua提供4中修饰符来配合模式使用




+

重复1次或多次

*

重复0次或多次

-

重复0次或多次

?

出现0次或1次



比如"+"修饰符可以匹配属于字符分类的一个或多个字符。它总是获取与模式相匹配的最长序列。




示例


lua 拼接数组 成字符 lua字符串合并_脚本语言_11




输出


lua 拼接数组 成字符 lua字符串合并_lua 拼接数组 成字符_12




6、string库表


string库表参考自http://blog.sina.com.cn/s/blog_6d9d6d160101975u.html


【基本函数】



函数

描述

示例

结果

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("the value is:%d",4)

the value is:4

sub

returns substring from index i to j of s

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")

1 2

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

7 8

gsub

在字符串中替换

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

zbcdzbcd 2

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

zzza 3

byte

返回字符的整数形式

string.byte("ABCD",4)

68

char

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

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("abcd\t\n","%c%c")

5 6

%C

非控制字符

string.find("\t\nabcd","%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 4

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

4 5


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


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




字符类

描述

示例

结果

[01]

匹配二进制数

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

3 3

[AB][CD]

匹配AC、AD、BC、BD

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

2 3

[[]]

匹配一对方括号[]

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

4 5

[1-3]

匹配数字1-3

string.find("312","[1-3][1-3][1-3]")

1 3

[b-d]

匹配字母b-d

string.find("dbc","[b-d][b-d][b-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 ab

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

3 4 12


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


【模式修饰符】




修饰符

描述

示例

结果

+

表示1个或多个,匹配最多个

string.find("aaabbb","(a+b)")

1 4 aaab

string.find("cccbbb","(a+b)")

nil

-

表示0个或多个,匹配最少个

string.find("zzxyyy","(xy-)")

3 3 x

string.find("zzzyyy","(x-y)")

4 4 y

*

表示0个或多个,匹配最多个

string.find("mmmnnn","(m*n)")

1 4 mmmb

string.find("lllnnn","(m*n)")

4 4 n

?

表示0个或1个

string.find("aaabbb","(a?b)")

3 4 ab

string.find("cccbbb","(a?b)")

4 4 b




(2)math库


math库参考自http://blog.sina.com.cn/s/blog_61dfab6b01015qh4.html


函数名

描述

示例

结果

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