Luaの文字列内の文字の最後のインデックスを取得するにはどうすればよいですか?
"/some/path/to/some/file.txt"
/
上記の文字列の最後のインデックスを取得するにはどうすればよいですか?
Luaの文字列内の文字の最後のインデックスを取得するにはどうすればよいですか?
"/some/path/to/some/file.txt"
/
上記の文字列の最後のインデックスを取得するにはどうすればよいですか?
index = string.find(your_string, "/[^/]*$")
(基本的に、「スラッシュ、次にスラッシュではないものが0個以上、次に文字列の終わり」というパターンが発生する位置を見つけます。)
この方法はもう少し高速です(文字列の末尾から検索します)。
index = your_string:match'^.*()/'
ループ?!?なぜそのためのループが必要なのですか?'reverse'ネイティブ文字列関数があります。それを適用して最初のインスタンスを取得してください:)サンプルに従って、完全なパスから拡張機能を取得します。
function fileExtension(path)
local lastdotpos = (path:reverse()):find("%.")
return (path:sub(1 - lastdotpos))
end
もちろん一行でできますが、読みやすくするために2つに分けています。
これが完全な解決策です。
local function basename(path)
return path:sub(path:find("/[^/]*$") + 1)
end
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)
nilを見つけ、最後の位置を記録するまで、次の値を探し続けることができます