Lua编程语言学习--字符串数据类型

312 阅读2分钟

引言

字符串用于表示文本。Lua语言中的字符串既可以表示单个字符,也可以表示一整本书籍。

Lua语言中的字符串是不可变值(immutable value)。

像Lua语言中的其他对象(表、函数等)一样,Lua语言中的字符串也是自动内存管理的对象之一。这意味着Lua语言会负责字符串的分配和释放,开发人员无须关注。

字符串常量

我们可以使用一对双引号或单引号来声明字符串常量(literal string)。

转义字符

转义字符意义ASCII码值(十进制)
\a响铃(BEL)007
\b退格(BS) ,将当前位置移到前一列008
\f换页(FF),将当前位置移到下页开头012
\n换行(LF) ,将当前位置移到下一行开头010
\r回车(CR) ,将当前位置移到本行开头013
\t水平制表(HT) (跳到下一个TAB位置)009
\v垂直制表(VT)011
\代表一个反斜线字符'''092
'代表一个单引号(撇号)字符039
"代表一个双引号字符034
空字符(NULL)000
\ddd1到3位八进制数所代表的任意字符三位八进制
\xhh1到2位十六进制所代表的任意字符二位十六进制

长字符串/多行字符串

像长注释/多行注释一样,可以使用一对双方括号来声明长字符串/多行字符串常量。被方括号括起来的内容可以包括很多行,并且内容中的转义序列不会被转义。

强制类型转换

Lua语言在运行时提供了数值与字符串之间的自动转换(conversion)。针对字符串的所有算术操作会尝试将字符串转换为数值。Lua语言不仅仅在算术操作时进行这种强制类型转换(coercion),还会在任何需要数值的情况下进行,例如函数math.sin的参数。

如果需要显式地将一个字符串转换成数值,那么可以使用函数tonumber。当这个字符串的内容不能表示为有效数字时该函数返回nil;否则,该函数就按照Lua语法扫描器的规则返回对应的整型值或浮点类型值。

默认情况下,函数tonumber使用的是十进制,但是也可以指明使用二进制到三十六进制之间的任意进制。

字符串标准库

参考手册