【Lua基础系列】之类型与值 (字符串String)
大家好,我是Lampard~~
欢迎来到Lua基础系列的博客
PS:本博客知识参考资料为:《Lua程序设计第四版》,该书由Lua的创始人2018年所编著,所以大家可以放心去吸收知识
前文再续,书接上一回。
今天要接着讲Lua中的基本类型字符串。
(一) 字符串String类型
Lua中的字符串是不可变值(immutable value)。我们不可以像在C语言中那样直接改变某个字符串中的某个字符。但是我们可以创建另外一个新字符串的方式来达到修改的目的。
可以使用长度操作符(#)来获取字符串的长度。
我们也可以用连接操作符(..) 来拼接两个字符串。但是由于Lua的字符串是不可变的,所以得到的是一个新的字符串。
(1)字符串常量
我们可以使用双引号或者单引号来声明字符串常量。
a = "a line"
b = ‘another line’
使用双引号声明的字符串中出现单引号时,不需要转义。
同理,使用单引号声明的字符串出现双引号时,不需要转义。
(2) 长字符串/多行字符串
为了方便缩进排版,所以Lua定义了用户可以使用一对方括号 [[]] 来声明长字符串。被方括号扩起来的内容可以由很多行,并且内容中的转义序列不会被转义。
同时,为了避免出现像这种情况
array[b[10]] -- 出现了两个]]
我们还可以在声明长字符串时在两个中括号之间加入等量的=号,如:
array[==[
123456 -- 这样lua也会自动识别它是一个长的字符串
]==]
(3)类型强制转换
当Lua语言发现在需要字符串的地方出现数字时,它会自动把数值转换为字符串。
但是假如我们需要 1 .. 2 想输出“12”的化话,那么数字和..连接符之间需要带空格,避免系统把它当成小数点
当在算数运算中发现字符串时,它会转化为浮点型数值再进行计算,要注意在比较操作中不会默认转化。
当然我们也可以显式的把字符串和数值相互转换:tostring()-- 返回字符串/ tonumber () --返回整形或浮点型数值。
(4)字符串标准库
Lua本身对字符串的处理十分有限,仅能够创建,拼接,取长度和比较字符串。
所以Lua处理字符串的完整能力来自字符串的标准库。
诶!怎么没有得到想要的结果呢?原来是忘记了Lua中字符串是不可变的这定义。所以我们要看到改变后的后果,可以用一个新的字符串接住它。
还有一些如:
string.gsub(stringName,"字符串一","字符串二")--把字符串一改成字符串二
string.sub(stringName,起始位置,终止位置) -- 返回从起始位置到终止位置的字符串
string.char(num) -- 把数字通过ascall译码转化为字符
string.byte(字符) -- 把字符通过ascall译码转化为数字
都是很有用的字符串函数
最后要给大家介绍介绍string.format(),它适用于进行字符串格式化和将数值输出为字符串的强大工具。
有点类似C中的printf()。
好啦,今天的Lua介绍就到这里,谢谢大家!!!