在Lua中只有string.find
,但有时需要string.rfind
。例如,要解析目录和文件路径,如:
fullpath = "c:/abc/def/test.lua"
pos = string.rfind(fullpath,'/')
dir = string.sub(fullpath,pos)
如何撰写此类string.rfind
?
答案 0 :(得分:6)
您可以使用string.match
:
fullpath = "c:/abc/def/test.lua"
dir = string.match(fullpath, ".*/")
file = string.match(fullpath, ".*/(.*)")
在模式中,.*
是贪婪的,因此在匹配/
<强>更新强>:
正如@Egor Skriptunoff所指出的,这更好:
dir, file = fullpath:match'(.*/)(.*)'
答案 1 :(得分:3)
Yu&amp;叶戈尔的答案有效。使用find的另一种可能性是反转字符串:
pos = #s - s:reverse():find("/") + 1