Lua中的字符串,表与迭代器
8> Lua 字符串
-
字符串或串(String)是由数字、字母、下划线组成的一串字符。
-
Lua 语言中字符串可以使用以下三种方式来表示:
-
单引号间的一串字符。
-
双引号间的一串字符。
-
[[ 与 ]] 间的一串字符。
str = "第一种"
str = '第二种'
str = [=[第三种]=]----第三种不会识别转义字符,中号[[ ]]之间可以加=号,但是左右两侧数目一致
8.1 Lua字符串支持的转义字符
转义字符 | 意义 | 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 |
\0 | 空字符(NULL) | 000 |
\ddd | 1到3位八进制数所代表的任意字符 | 三位八进制 |
\xhh | 1到2位十六进制所代表的任意字符 | 二位十六进制 |
\[ | 左方括号 | 091 |
\] | 右方括号 | 093 |
8.2 String常见方法
8.2.1 大小写转换
- string.upper(str)与string.lower(str)
str = "123abCdEfg"
--小写转大写
print(string.upper(str))--123ABCDEFG
--大写转小写
print(string.lower(str))--123abcdefg
8.2.2 替换子字符串
- string.gsub(mainString,findString,replaceString,num)
num:表示要替换的次数。可选参数,不写默认全部替换。
- 函数会返回一个修改后的字符串,并返回修改的次数
string.gsub("aaaa","a","z",3);
--zzza 3//
8.2.3 字符串反转
- string.reverse(arg)
string.reverse("Lua")--auL
8.2.4 拼接字符串
- string.format(…)—返回一个类似print的格式化字符串
string.format("the value is:%d",4)
-----the value is:4//%d--表示拼接一个数字
-
%d:与数字拼接
-
%a:与任何字符拼接
-
%s:与字符配对
-
%q:与字符串拼接
8.2.5 字符串截取
- string.sub(str,i [,j = -1])-----从i开始,到末尾结束[或到 j 结束],j 默认-1表示到末尾,负数表示为倒序。
string.sub("Unity2020",6)--output:2020
string.sub("Unity2020",1,5)--output:Unity
8.2.6 计算字符串的长度
- string.len(str)
string.len("我是你爸爸")--15//汉字占三个长度
8.2.7 整型和字符之间的转换
-
string.char(arg [ , arg…])–可以传入多个数字,char方法将传入的数字对照ASCII表转换成字符。最大数字为255
-
string.byte(str [ , n])-----将字符串的第n个字符转换成ASCII关联数字。默认第一个字符。传入负数表示为负数。
string.char(97,98,99,100)
----------------------abcd
string.byte("ABCD",4)
---------------------D-68
string.byte("ABCD")
---------------------A-65
8.2.8 查找子字符串的位置
-
string.find( str , substr , [index [ , endIndex] ] )-------在一个指定的目标字符串中搜索指定的内容(第三个参数为索引),返回其具体位置。不存在则返回 nil。
-
可以指定从第index开始,到endIndex结束。
string.find("Hello Lua user", "Lua", 1) --7 9
8.2.9 拷贝若干次字符串
- string.rep( str , n )----表示重复n次str并返回
string.rep("abcd",2)---abcdabcd
8.2.10 匹配格式查找
-
string.match(str, pattern, init)
-
string.match()只寻找源字串str中的第一个配对。pattern表示匹配捕捉标记格式,参数init可选, 指定搜寻过程的起点, 默认为1。
-
在成功配对时, 函数将返回配对表达式中的所有捕获结果; 如果没有设置捕获标记, 则返回整个配对字符串. 当没有成功的配对时, 返回nil。
string.match("I have 2 questions for you."