22

我有一个带路径的标准 Windows 文件名。我需要从字符串中拆分出文件名、扩展名和路径。

我目前只是从末尾向后读取字符串以查找 . 切断扩展名,第一个 \ 来获取路径。

我确信我应该能够使用 Lua 模式来做到这一点,但是当涉及到从字符串的右侧工作时,我总是失败。

例如。c:\temp\test\myfile.txt 应该返回

  • c:\温度\测试\
  • 我的文件.txt
  • 文本文件

如果这是重复的,请提前道歉,但我可以找到很多其他语言的例子,但不是 Lua。

4

3 回答 3

38

这是一个改进版本,适用于 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"
于 2012-08-30T06:40:20.503 回答
18
> return string.match([[c:\temp\test\myfile.txt]], "(.-)([^\\]-([^%.]+))$")
c:\temp\test\   myfile.txt  txt

这似乎正是你想要的。

于 2011-03-09T09:16:56.257 回答
0

在Lua中拆分字符串?

那里有一些用于表函数的字符串,将“\”拆分为 \ 无论如何都不能在文件夹名称中,因此您最终会得到一个索引为驱动器且最后一个索引为文件的表。

于 2012-08-30T01:16:04.103 回答