如何在Lua中实现string.rfind

时间:2013-06-30 03:16:19

标签: string lua lua-patterns

在Lua中只有string.find,但有时需要string.rfind。例如,要解析目录和文件路径,如:

fullpath = "c:/abc/def/test.lua"
pos = string.rfind(fullpath,'/')
dir = string.sub(fullpath,pos)

如何撰写此类string.rfind

2 个答案:

答案 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