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

Jan*_*e T 17 lua lua-patterns

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

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

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

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

  • C:\ TEMP \测试\
  • myfile.txt文件
  • 文本

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

Pau*_*nko 33

这是一个改进版本,适用于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"
Run Code Online (Sandbox Code Playgroud)


Arr*_*ter 16

> return string.match([[c:\temp\test\myfile.txt]], "(.-)([^\\]-([^%.]+))$")
c:\temp\test\   myfile.txt  txt
Run Code Online (Sandbox Code Playgroud)

这似乎完全符合你的要求.