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

Последний индекс символа в строке

Как вы получаете последний индекс символа в строке в Lua?

"/some/path/to/some/file.txt"

Как мне получить индекс последнего / в приведенной выше строке?

4b9b3361

Ответ 1

index = string.find(your_string, "/[^/]*$")

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

Ответ 2

Этот метод немного быстрее (он ищет от конца строки):

index = your_string:match'^.*()/'

Ответ 3

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)

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

Ответ 4

ниже это завершенное решение:

local function getCurrentDir()
  currentScriptName = arg[0]
  indexOfLastSeparator = string.find(currentScriptName, "/[^/]*$")
  return string.sub(currentScriptName,0,indexOfLastSeparator);
end

Ответ 5

Loops?!? Зачем вам нужен цикл? Там "обратная" функция родной строки учитывает вас, просто примените ее, затем получите первый экземпляр:). Следуя образцу, чтобы получить расширение из полного пути:

function fileExtension(path)
    local lastdotpos = (path:reverse()):find("%.")
    return (path:sub(-lastdotpos+1))
end

Вы можете сделать это в одной строке, конечно, я разделил ее на две части ради разборчивости.