Lua 中的 string.find() 函数


string.find() 是字符串库中最强大的库函数之一。

Lua 没有使用 POSIX 正则表达式进行模式匹配,因为其实现需要 4000 行代码,这实际上比所有 Lua 标准库加起来还要多。取而代之的是,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

更新于: 2021-07-19

20K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告