02 Lua中的字符串,表与迭代器

本文详细介绍了Lua中的字符串操作,包括大小写转换、替换、反转、拼接、截取等方法。此外,讲解了数组概念,包括一维和多维数组的使用,以及获取数组长度的规则。还探讨了迭代器的类型,如泛型For、无状态和多状态迭代器。最后,深入讨论了表的构造、常用方法,如拼接、插入、移除和排序,并解析了表的调用方式和表作为类的模拟。
摘要由CSDN通过智能技术生成

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."
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值