我有一个带路径的标准Windows文件名。我需要从字符串中分割出文件名,扩展名和路径。
我目前正在简单地从最后寻找字符串。切断扩展,并且第一个\获得路径。
我确信我应该能够使用Lua模式执行此操作,但是当我从字符串的右侧开始工作时,我仍然会失败。
例如。 C:\ TEMP \测试\ myfile.txt的 应该返回
如果这是重复的话,请提前感谢道歉,但我可以找到很多其他语言的例子,但不是Lua。
答案 0 :(得分:32)
这是一个改进版本,适用于Windows和Unix路径,也可以处理没有点的文件(或带有多个点的文件):
= string.match([[/mnt/tmp/myfile.txt]], "(.-)([^\\/]-%.?([^%.\\/]*))$")
"/mnt/tmp/" "myfile.txt" "txt"
= string.match([[/mnt/tmp/myfile.txt.1]], "(.-)([^\\/]-%.?([^%.\\/]*))$")
"/mnt/tmp/" "myfile.txt.1" "1"
= string.match([[c:\temp\test\myfile.txt]], "(.-)([^\\/]-%.?([^%.\\/]*))$")
"c:\\temp\\test\\" "myfile.txt" "txt"
= string.match([[/test.i/directory.here/filename]], "(.-)([^\\/]-%.?([^%.\\/]*))$")
"/test.i/directory.here/" "filename" "filename"
答案 1 :(得分:17)
> return string.match([[c:\temp\test\myfile.txt]], "(.-)([^\\]-([^%.]+))$")
c:\temp\test\ myfile.txt txt
这似乎完全符合您的要求。
答案 2 :(得分:0)
那里有一些字符串到表函数,将“\”拆分为\ cant无论如何都在文件夹名称中,所以你最终会得到一个表,其中索引1是驱动器,最后一个索引是文件。