将lua字符串拆分成单个字符。
2017-5-23 12:4:43
收藏:0
阅读:204
评论:2
我只找到了关于我所寻找的内容的一个相关问题:按字符数量拆分字符串,但它对我没什么用。
我有一个字符串变量,是由三个数字组成的(可以是从000到999)。我需要将每个数字(字符)分离出来,并将它们放入一个表格中。
我正在为一个使用lua的游戏模组编程,它有一些额外的函数。如果你能帮我使用 http://wiki.multitheftauto.com/wiki/Split 来完成它,就太棒了,但任何其他方式也可以。
先感谢您。
点赞
用户277826
我一直在寻找这样的东西,但是避免循环,并希望它是一个一行代码的东西。最终,我从lua-users wiki: Split Join找到了这个例子:
fields = {str:match((str:gsub("[^"..sep.."]*"..sep, "([^"..sep.."]*)"..sep)))}
...这正是我想要的语法 - 一行代码,返回一个表 - 但是,我真的不明白发生了什么 :/ 然而,经过一些试探,我成功地找到了使用这个习惯用语拆分字符的正确语法,它显然是:
fields = { str:match( (str:gsub(".", "(.)")) ) }
我猜,发生了什么是 gsub 基本上在每个字符 '.' 周围放置括号 '(.)' - 以便 match 将其视为单独的匹配单元,并将它们“提取”为单独的单元...但我仍然不明白为什么围绕 str:gsub(".", "(.)") 一块有额外的一对括号。
我用Lua5.1测试过这个:
str = "a - b - c"
fields = { str:match( (str:gsub(".", "(.)")) ) }
print(table_print(fields))
...其中的 table_print 是来自 lua-users wiki: TableSerialization 的;而这段代码打印:
"a"
" "
"-"
" "
"b"
" "
"-"
" "
"c"
2015-01-14 06:58:23
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的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中获取用户配置主目录的跨平台方法
纠正为 OP 想询问的内容:
如果只是将一个 3 位数拆成三个数字,那就更简单了:
s='429' c1,c2,c3=s:match('(%d)(%d)(%d)') t={tonumber(c1),tonumber(c2),tonumber(c3)}针对“如何将由多组 3 位数字组成的长字符串拆分”这个问题的回答:
这很简单。您可以查看参考手册中的
gmatch函数:s="123456789" res={} for num in s:gmatch('%d%d%d') do res[#res+1]=tonumber(num) end或者,如果您不喜欢循环:
res={} s:gsub('%d%d%d',function(n)res[#res+1]=tonumber(n)end)