我能否从迭代器中获取最后一个值?
2019-5-18 13:31:18
收藏:0
阅读:89
评论:3
我想通过某个分隔符拆分一个字符串并仅获取最后一部分。我不关心其余部分。我知道我可以这样做:
local last
for p in string.gmatch('file_name_test', '_%w+$') do last = p end
它可以工作,但是我认为很丑陋。
是否有更优雅的方法来表示:
local last = string.gmatch('file_name_test', '_%w+$')[1]
这不起作用,因为 gmatch 返回的是一个迭代器(而不是一个表)。
点赞
用户734069
模式_%w+$只会返回单个匹配。这是因为你将其锚定在字符串的结尾,所以它只能匹配或无法匹配(如果在结尾处没有下划线后跟至少一个%w字符)。
g*模式匹配系列是为了迭代一系列匹配。如果您想要一次性获得所有匹配(作为多个返回值返回),请使用非g前缀函数。例如string.match:
string.match('file_name_test', '_%w+$')
如果没有匹配,则会返回nil。
2016-02-08 21:02:34
用户3979429
虽然其他答案对于你的_情况_给出了正确的答案,但我想回答你的_问题_。那就是从迭代器中获取第一个项。
其实答案非常简单。由于迭代器只是继续返回,直到返回空值,我们只需要调用它!
local first = string.gmatch('file_name_test', '_%w+$')()
然而,我非常困惑,因为在你的问题中你还问到了它将返回的_最后一个_东西。很遗憾,你不能在不迭代所有项的情况下做到这一点,因为迭代器不能“提前跳过”。
2016-02-09 03:20:26
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
使用
string.match而非迭代器:local last = string.match('file_name_test', '_(%w+)$') print (last) --> test