我有一个带路径的标准 Windows 文件名。我需要从字符串中拆分出文件名、扩展名和路径。
我目前只是从末尾向后读取字符串以查找 . 切断扩展名,第一个 \ 来获取路径。
我确信我应该能够使用 Lua 模式来做到这一点,但是当涉及到从字符串的右侧工作时,我总是失败。
例如。c:\temp\test\myfile.txt 应该返回
- c:\温度\测试\
- 我的文件.txt
- 文本文件
如果这是重复的,请提前道歉,但我可以找到很多其他语言的例子,但不是 Lua。
我有一个带路径的标准 Windows 文件名。我需要从字符串中拆分出文件名、扩展名和路径。
我目前只是从末尾向后读取字符串以查找 . 切断扩展名,第一个 \ 来获取路径。
我确信我应该能够使用 Lua 模式来做到这一点,但是当涉及到从字符串的右侧工作时,我总是失败。
例如。c:\temp\test\myfile.txt 应该返回
如果这是重复的,请提前道歉,但我可以找到很多其他语言的例子,但不是 Lua。
这是一个改进版本,适用于 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"
> return string.match([[c:\temp\test\myfile.txt]], "(.-)([^\\]-([^%.]+))$")
c:\temp\test\ myfile.txt txt
这似乎正是你想要的。
那里有一些用于表函数的字符串,将“\”拆分为 \ 无论如何都不能在文件夹名称中,因此您最终会得到一个索引为驱动器且最后一个索引为文件的表。