string.find() 是字符串库中最强大的库函数之一。
Lua 不使用 POSIX 正则表达式进行模式匹配,因为它的实现需要 4,000 行代码,这实际上比所有 Lua 标准库加起来还要大。代替 POSIX 模式匹配,Lua 的模式匹配实现不到 500 行。
该函数用于在给定字符串中查找特定模式,它通常需要两个参数,第一个参数是我们要搜索的模式的字符串,第二个参数是我们要搜索的模式。string.find()
还有第三个参数,第三个参数是一个索引,它告诉主题字符串中从哪里开始搜索。当我们想要处理出现给定模式的所有索引时,此参数很有用。它主要用于在同一个字符串中多次出现相同模式的情况。
语法
indexstart, indexend = string.find(s,”pattern”) or indexstart, indexend = string.find(s,”pattern”,indexstart + z)
在上面的语法中,我提到了我们可以使用的两种函数类型。string.find()
示例
让我们考虑一个非常简单的函数示例,我们将尝试在给定的字符串中找到一个简单的模式。string.find()
考虑下面显示的例子 -
s = "hello world" i, j = string.find(s, "hello") print(i, j)
请注意,在上面的代码中,i 标识符是我们搜索的模式所在的起始索引,j 标识符是该模式的结束索引。
输出结果
1 5
在某些情况下,我们可能只想使用这些索引之一,在这些情况下,我们可以简单地编写如下代码。
示例
考虑下面显示的例子 -
_, y = string.find(s,"world") print(y) x, _ = string.find(s,"world") print(x)输出结果
11 7
让我们再看一个例子,我们将在其中使用第三个参数。
示例
考虑下面显示的例子 -
s = "hello n hello y hello z" index = string.find(s,"hello",i+1) print(index)输出结果
9