Подтвердить что ты не робот

Каков самый простой способ разделить имя пути на его компоненты в Lua

У меня есть стандартное имя файла Windows с Path. Мне нужно разделить имя файла, расширение и путь от строки.

В настоящее время я просто читаю строку назад с самого конца. отрезать расширение и первый \, чтобы получить путь.

Я уверен, что я должен сделать это, используя шаблон Lua, но я продолжаю терпеть неудачу, когда дело доходит до работы справа от строки.

например. C:\Temp\тест\myfile.txt должен вернуться

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

Благодарим вас заранее извинения, если это дубликат, но я мог бы найти множество примеров для других языков, но не для Lua.

4b9b3361

Ответ 1

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

Это похоже на то, что вы хотите.

Ответ 2

Вот улучшенная версия, которая работает для путей 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"

Ответ 3

Разделить строку в Lua?

В нем есть несколько функций для работы с таблицами, разделяющих "\", так как \can not должно быть в имени папки, так что в итоге вы получите таблицу с индексом, являющимся диском, и последним индексом является файл.