在 Lua 中获取当前文件名
Getting current file name in Lua
如何获取不带路径和.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
要只打印 bakurichimacha 和勇敢的剑攻击吗?
试试这个:
function get_file_name(file)
return file:match("^.+/(.+)$")
end
您可以使用string.match函数
local filename = function()
local str = debug.getinfo(2, "S").source:sub(2)
return str:match("^.*/(.*).lua$") or str
end
print(filename());
尽管被接受的@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)
end
如何获取不带路径和.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
要只打印 bakurichimacha 和勇敢的剑攻击吗?
试试这个:
function get_file_name(file)
return file:match("^.+/(.+)$")
end
您可以使用string.match函数
local filename = function()
local str = debug.getinfo(2, "S").source:sub(2)
return str:match("^.*/(.*).lua$") or str
end
print(filename());
尽管被接受的@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)
end