如何在没有path和.lua的情况下获取当前文件名?
我尝试过:
local info = debug.getinfo(1,'S');
print(info.source);这就是我得到的:
@data/spells/scripts/10lvl/bakurichimacha.lua
@data/spells/scripts/1000lvl/brave sword attack.lua如何删除这些部件:
@data/spells/scripts/10lvl/ and .lua
@data/spells/scripts/1000lvl/ and .lua才能印出白骨精和勇士的剑击?
发布于 2018-01-23 21:40:10
试试这个:
function get_file_name(file)
return file:match("^.+/(.+)$")
end发布于 2018-01-27 05:41:02
您可以使用string.match函数
local filename = function()
local str = debug.getinfo(2, "S").source:sub(2)
return str:match("^.*/(.*).lua$") or str
end
print(filename());发布于 2019-06-09 17:56:21
虽然被接受的@kingjulian答案似乎在大多数情况下都有效,但它在无路径文件名参数方面失败了。例如:aTestFile.lua等。
我对正则表达式进行了一些修改,以包括这些缺失的场景
function get_file_name(file)
return file:match("[^/]*.lua$")
end测试过的here
获取除扩展名.lua之外的唯一文件名
function get_file_name(file)
local file_name = file:match("[^/]*.lua$")
return file_name:sub(0, #file_name - 4)
endhttps://stackoverflow.com/questions/48402876
复制相似问题