string的模式匹配详解
–>表示输出结果
1.string.find
--查找字符串所在的索引
--2个必选参数
--参数1:原字符串 参数2:模式串
--返回值1:匹配的起始索引,返回值2:匹配的终止索引
string.find("woshixiaoming", "shi") -->3, 5
--string.find有另外两个参数是可选的
--参数3:从哪个索引开始
string.find("woshi", "wo", 3) --> nil
--不常用 参数4:布尔值,是否简单搜索,true:忽略其他影响,单纯查找字符串。不填默认是false
string.find("[wo]", "[", 1) -->会报错,因为 "[" 有特殊含义
string.find("[wo]", "[", 1, true) --> 1
2.string.match
--跟string.find类似,但是返回的是匹配到的字符串
--这个方法主要用于搜索变量,模式串无法确定的时候
--2个必选参数
string.match("I am xiaoming", "am") --> am
--1个必选参数,表示从哪里开始,默认是从1开始
string.match("I am xiaoming", "am", 3) --> am
--string.match还有另一种用法,可以使用占位符,例如%d表示数字
string.match("today is 2022/10/2", "%d/%d") -->2/1 (2022的最后一个2 跟10的第一个1)
4.string.gsub
--用于将模式串替换成新的字符串
--3个必选参数
--参数1:原字符串 参数2:模式串 参数3:替换的字符串
--返回替换后的字符串
string.gsub("I am xiaoming", "am", "am not") --> I am not xiaoming
--有一个可选参数
--参数4:替换次数,不填默认是全部匹配
string.gsub("I ammm xiaoming", "m", "-", 2) --> I a--m xiaoming
5.string.sub
--和gsub并没有什么关系
--用作截取字符串
--有2个必选参数
--参数1:原字符串 参数2:截取的开始索引
string.sub("I am xiaoming", 3) --> am xiaoming
--1个可选参数
--参数3:结束索引 不填则是截取开始索引后的全部字符串
string.sub("I am xiaoming", 3, 4) --> am