高速掌握Lua 5.3 —— 字符串库 (2)
Q:模式匹配字符串的相關(guān)函數(shù)?
A:
--[[ string.find(s, pattern [, init [, plain]])在字符串"s"中查找第一個(gè)與匹配模式"pattern"相匹配的子串,函數(shù)返回子串的開(kāi)始位置和終止位置。假設(shè)未找到返回"nil"。假設(shè)在"pattern"中定義了捕獲,捕獲物也會(huì)在之后依次返回。"init"可指定從字符串"s"的什么位置開(kāi)始查找,默覺(jué)得1。
"plain"指定是否以模式匹配的形式查找子串,假設(shè)"plain"為0, 那么將依據(jù)"pattern"的字面意思查找子串。默覺(jué)得非0值。]] s = "Hello World! 123 %a+" print(string.find(s, "l")) --> 3 3 print(string.find(s, "l", 6)) --> 10 10 print(string.find(s, "lll", 6)) --> nil print(string.find(s, "%a+", 6)) --> 7 11 print(string.find(s, "%a+", 6, 0)) --> 18 20 -- 通過(guò)使用第三個(gè)參數(shù)能夠?qū)崿F(xiàn)查找字符串中全部匹配"pattern"的子串。 local b = 0 local e = 0 while true do -- 從匹配位置的下一個(gè)位置開(kāi)始繼續(xù)查找。 b, e = string.find(s, "%a+", e + 1) if b == nil then break end io.write(string.format("%s, ", string.sub(s, b, e))) --> Hello, World, a, end print() --[[ string.gsub(s, pattern, repl [, n]) 將字符串"s"中前"n"個(gè)與匹配模式"pattern"相匹配的子串替換為"repl", "n"假設(shè)不指定,默認(rèn)替換全部的匹配。 函數(shù)返回被替換后的字符串。以及替換的次數(shù)。 1、假設(shè)"repl"是一個(gè)字符串(當(dāng)中能夠使用捕獲物),那么把這個(gè)字符串作為替換品。 特例,"%0"代表整個(gè)匹配。 2、假設(shè)"repl"是一個(gè)"table",每次匹配時(shí)都會(huì)用第一個(gè)捕獲物作為鍵去查這張表。 假設(shè)"repl"是一個(gè)函數(shù),則在每次匹配時(shí)都會(huì)以全部捕獲物作為參數(shù)調(diào)用這個(gè)函數(shù)。 3、假設(shè)"pattern"中沒(méi)有設(shè)定捕獲。則默認(rèn)捕獲整個(gè)"pattern"。 4、假設(shè)"table"的查詢結(jié)果或者函數(shù)的返回結(jié)果是一個(gè)字符串或是個(gè)數(shù)字時(shí), 都將其作為替換品。而結(jié)果為"false"或"nil"時(shí)不作替換(即保留匹配前的原始串)。]] print(string.gsub("Lua is cute", "cute", "great")) --> Lua is great 1 print(string.gsub("all lii", "l", "x")) --> axx xii 3 print(string.gsub("Lua is great", "perl", "tcl")) --> Lua is great 0 print(string.gsub("hello world", "(%w+)", "%1 %1")) --> hello hello world world 2 print(string.gsub("hello world", "%w+", "%0 %0", 1)) --> hello hello world 1 print(string.gsub("hello world from Lua", "(%w+)%s*(%w+)", "%2 %1")) --> world hello Lua from 2 print(string.gsub("home = $HOME, user = $USER", "%$(%w+)", os.getenv)) --> home = /home/roberto, user = roberto
posted @ 2017-08-07 14:14 llguanli 閱讀(...) 評(píng)論(...) 編輯 收藏總結(jié)
以上是生活随笔為你收集整理的高速掌握Lua 5.3 —— 字符串库 (2)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 在公司的局域网内,组长让你在自己的虚拟机
- 下一篇: RDD缓存学习