0X12字符串
前置知识
正文
- 仅仅能处理数字还是不够的。因为人更习惯通过文字来表现思维。但是用编程语言处理字符串有一个问题需要解决——程序源码就是文字,如果区分一段文字是被处理的数据还是处理数据的命令?
- 就像一开始使用print输出那样。用引号''把表示数据的字符串括起来,就能区分开数据和命令。例如:
>
>'2+2+8'
>
这一串字符一共有5个,不包含表示字符串界限的引号本身。在交互式解释器中这个式子不会计算求值而会原样返回字符串。
- 在Lua中,字符串和数字一样也是一种值。可以进行运算可以保存为变量:
>
>str='This is a string.'
>str
>
第一条语句把一个字符串保存到变量str中。交互式环境输入变量名可以查看变量内容。
- 我们再来回顾一下print函数。它除了能输出字符串,也可以把数字作为字符串输出。或者把变量作为其参数,输出变量的值。尝试以下代码:
>
>print(5)
>print(5+3)
>x=8
>print(x)
>
注意最后一个调用是要输出x的值所以不加引号。加上引号会输出x这个变量名本身,而不会输出变量的值。
- 所以print也能输出含有字符串值的变量:
>
>str='This is a string'
>print(str)
>
- print也可以接收多个参数。它们会被依次输出,中间用空白隔开。但是输出内容都在同一行,不会硬换行(除非输出的字符串变量本身包含硬换行符)。
>
>str1,str2='hello','world'
>print(str1,str2)
>
- 如果没有给print任何参数,则print会输出一个空行。
- 既然是变量就可以运算。字符串最简单的运算就是链接,使用两个句点..作为算符。例如
>
>str='hello'..'world'
>print(str)
>
这个运算称为字符串链接(concatenation)。
- 数字也可以和字符串进行链接运算。这时数字会自动转换成字符串。
>
>r=4*5
>str='The result is:'..r
>print(str)
>
- 视频演示: 字符串运算 https://www.bilibili.com/video/av14257323/
- 字符串还有一个一元运算。不过这个运算不是把字符串编程另一个字符串而是返回字符串的长度(包含的字符数)。用井号加变量或者引号表示字字符串:
>
>str='HelloWorld!'
>#str
>#'1234567890'
>
这个算符也可以用函数rawlen替代。例如
>>rawlen('This is another sentence.')
>
后续推荐