首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取Lua中的当前文件名

获取Lua中的当前文件名
EN

Stack Overflow用户
提问于 2018-01-23 21:26:20
回答 3查看 8.1K关注 0票数 1

如何在没有path和.lua的情况下获取当前文件名?

我尝试过:

代码语言:javascript
复制
local info = debug.getinfo(1,'S');
print(info.source);

这就是我得到的:

代码语言:javascript
复制
@data/spells/scripts/10lvl/bakurichimacha.lua
@data/spells/scripts/1000lvl/brave sword attack.lua

如何删除这些部件:

代码语言:javascript
复制
@data/spells/scripts/10lvl/ and .lua
@data/spells/scripts/1000lvl/ and .lua

才能印出白骨精和勇士的剑击?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-01-23 21:40:10

试试这个:

代码语言:javascript
复制
function get_file_name(file)
      return file:match("^.+/(.+)$")
end
票数 4
EN

Stack Overflow用户

发布于 2018-01-27 05:41:02

您可以使用string.match函数

代码语言:javascript
复制
local filename = function()
  local str = debug.getinfo(2, "S").source:sub(2)
  return str:match("^.*/(.*).lua$") or str
end
print(filename());
票数 2
EN

Stack Overflow用户

发布于 2019-06-09 17:56:21

虽然被接受的@kingjulian答案似乎在大多数情况下都有效,但它在无路径文件名参数方面失败了。例如:aTestFile.lua等。

我对正则表达式进行了一些修改,以包括这些缺失的场景

代码语言:javascript
复制
function get_file_name(file)
      return file:match("[^/]*.lua$")
end

测试过的here

获取除扩展名.lua之外的唯一文件名

代码语言:javascript
复制
function get_file_name(file)
      local file_name = file:match("[^/]*.lua$")
      return file_name:sub(0, #file_name - 4)
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48402876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档