Ответ 1
index = string.find(your_string, "/[^/]*$")
(В принципе, найдите позицию, в которой появляется шаблон "передняя косая черта, затем ноль или более вещей, которые не являются косой чертой, а затем конец строки".
Как вы получаете последний индекс символа в строке в Lua?
"/some/path/to/some/file.txt"
Как мне получить индекс последнего /
в приведенной выше строке?
index = string.find(your_string, "/[^/]*$")
(В принципе, найдите позицию, в которой появляется шаблон "передняя косая черта, затем ноль или более вещей, которые не являются косой чертой, а затем конец строки".
Этот метод немного быстрее (он ищет от конца строки):
index = your_string:match'^.*()/'
local s = "/aa/bb/cc/dd/ee.txt"
local sep = "/"
local lastIndex = nil
local p = string.find(s, sep, 1)
lastIndex = p
while p do
p = string.find(s, sep, p + 1)
if p then
lastIndex = p
end
end
print(lastIndex)
Вы можете продолжить поиск следующего значения, пока не найдете нуль, запишите последнюю позицию
ниже это завершенное решение:
local function getCurrentDir()
currentScriptName = arg[0]
indexOfLastSeparator = string.find(currentScriptName, "/[^/]*$")
return string.sub(currentScriptName,0,indexOfLastSeparator);
end
Loops?!? Зачем вам нужен цикл? Там "обратная" функция родной строки учитывает вас, просто примените ее, затем получите первый экземпляр:). Следуя образцу, чтобы получить расширение из полного пути:
function fileExtension(path)
local lastdotpos = (path:reverse()):find("%.")
return (path:sub(-lastdotpos+1))
end
Вы можете сделать это в одной строке, конечно, я разделил ее на две части ради разборчивости.