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+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告