把一个带有括号的字符串分割开
2016-9-28 18:59:39
收藏:0
阅读:98
评论:2
请查看以下代码。
str = "1791 (AR6K Async) S 2 0 0 0 -1 2129984 0 0 0 0 0 113 0 0 20 0 1 0 2370 0 0 4294967295 0 0 0 0 0 0 0 2147483647 0 3221520956 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0"
for val in str:gmatch("%S+") do
print(val)
end
输出结果:
1791
(AR6K
Async)
S
2
0
0
0
-1
....
但我期望的输出结果是:
1791
(AR6K Async)
S
2
0
0
0
-1
...
请问有人能帮我获取括号中的值作为单个值,而不是获取单独的值吗?
点赞
用户6834680
str = "1791 (AR6K Async) S 2 0 0 0 -1 2129984 0 0 0 0 0 113 0 0 20 0 1 0 2370 0 0 4294967295 0 0 0 0 0 0 0 2147483647 0 3221520956 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0"
-- 将所有没有空格的子串使用 "零标记" 包围起来
-- 在开头和结尾添加一个二进制零字符
-- \0 表示二进制零字符
for val in str:gsub("%S+","\0%0\0")
-- 将括号内部的 "零标记" 删除
:gsub("%b()", function(s) return s:gsub("%z","") end)
-- 显示所有被包围的部分
:gmatch("%z(.-)%z") do
print(val)
end
2016-09-29 07:43:09
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的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 代码?

可能无法使用单一的 lua 模式来完成这个任务。
然而,自己编写解析/拆分字符串或者稍微修改代码来连接从以 ( 开头到以 ) 结尾的部分可能会更容易些。
以下是一个简单的示例:
str = "1791 (AR6K Async) S 2 0 0 0 -1 2129984 0 0 0 0 0 113 0 0 20 0 1 0 2370 0 0 4294967295 0 0 0 0 0 0 0 2147483647 0 3221520956 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0" local temp for val in str:gmatch("%S+") do if temp then if val:sub(#val, #val) == ")" then print(temp.." "..val) temp = nil else temp = temp.." "..val end elseif val:sub(1,1) == "(" then temp = val else print(val) end end这段代码与你自己的代码完全一样,只不过当遇到一个以左括号开头的子字符串时,它会将其保存到
temp变量中。然后它会将新值连接到temp,直到遇到以右括号结尾的子字符串。此时,保存在temp中的整个字符串将被打印,temp被设置为 nil,并正常继续循环。因此,只是针对字符串带有括号的情况编码了一个特殊的情况。
这可能不是最有效的实现,但它运行正常。此外,它假定分隔符是空格,因为当字符串连接到
temp变量时,它们将与普通空格连接在一起。它不能处理嵌套的括号。然而,这只是一个快速展示这个想法的示例,我认为如果你要使用它,你可以根据需要自行解决这些缺点。