将路径名拆分为Lua中的组件的最佳方法是什么?

时间:2011-03-09 08:41:18

标签: lua lua-patterns

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

我目前正在简单地从最后寻找字符串。切断扩展,并且第一个\获得路径。

我确信我应该能够使用Lua模式执行此操作,但是当我从字符串的右侧开始工作时,我仍然会失败。

例如。 C:\ TEMP \测试\ myfile.txt的 应该返回

  • c:\ temp \ test \
  • myfile.txt
  • TXT

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

3 个答案:

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

Split string in Lua?

那里有一些字符串到表函数,将“\”拆分为\ cant无论如何都在文件夹名称中,所以你最终会得到一个表,其中索引1是驱动器,最后一个索引是文件。