18

Luaの文字列内の文字の最後のインデックスを取得するにはどうすればよいですか?

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

/上記の文字列の最後のインデックスを取得するにはどうすればよいですか?

4

5 に答える 5

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

(基本的に、「スラッシュ、次にスラッシュではないものが0個以上、次に文字列の終わり」というパターンが発生する位置を見つけます。)

于 2013-01-28T01:23:49.880 に答える
7

この方法はもう少し高速です(文字列の末尾から検索します)。

index = your_string:match'^.*()/'
于 2013-01-29T01:00:25.923 に答える
3

ループ?!?なぜそのためのループが必要なのですか?'reverse'ネイティブ文字列関数があります。それを適用して最初のインスタンスを取得してください:)サンプルに従って、完全なパスから拡張機能を取得します。

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

もちろん一行でできますが、読みやすくするために2つに分けています。

于 2017-05-23T18:41:06.007 に答える
2

これが完全な解決策です。

local function basename(path)
  return path:sub(path:find("/[^/]*$") + 1)
end
于 2016-10-05T11:34:19.773 に答える
0
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を見つけ、最後の位置を記録するまで、次の値を探し続けることができます

于 2013-06-19T07:16:26.070 に答える