精華區beta mud_sanc 關於我們 聯絡資訊
string.find(s, pattern [, init [, plain]]) 功能:尋找s中首次出現pattern的位置,如果找到則回傳首次出現的起始和結束位置,否則 返回nil 說明:這個函數有四個參數可用: s:母體。 pattern:目標字串。 init:搜尋起始位置(數字,可用負值)。可加可不加。 palin:搜尋模式(true|false),開關簡單匹配模式。可加可不加,預設為簡單匹 配模式。 範例:a = '你的身上(wealth)帶有 6667570 影特幣,銀行存款(balance)有 63908926 影 特幣。' print (string.find(a,'影特幣')) 得到:30 35,第一個值是起始位置,第二個值是結束位置。只有抓到第一個'影特幣 。如果要抓全部可以增加第三個參數,用迴圈執行: for i = 1,10 do i,j = string.find(a,'%d+ ',-j) print(i,j) if i == nil then break end end 基本上,這個應該是用while...do...end 或repeat...until,不過,這對初學者而 言(就是我),太危險了,不如用能控制次數的for...end安全。先設一個差不多的 次數,這裡是設10次,不管寫對還是寫錯,10就會結束,至少不會死當。把起始值 傳給i,結束值傳給j,再把j設到string.find的第三個參數,下次就會從上次的結束 尋找位置開始找。這次就不管一樣的,改找數字,搜尋條件可以使用也表達式,不過 轉義字元不是'\',而是'%'。為了不做白工,所以加個判斷,找完之後就自行跳出迴 圈。結果如下: 第一組數字起始位置:22,結束位置:29。 第二組數字起始位置:58,結束位置:66。 "nil nil"代表己經找到最後了。    在網路上找到使用 while 迴圈的寫法:    local t = {} -- 紀錄換行字元所在位置    local i = 0    while true do     i = string.find(s, "\n", i+1) -- 找下一行     if i == nil then break end     table.insert(t, i)    end