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
廣告