Lua:根据接收到的符号数量捕获字符串
我目前有一个字符串,它可以根据第一个数字在一个或两个特定位置(基于捕获的第一个数字)的大小而具有任何长度。例如:
更改
第一个数字捕获告诉我是否需要跟随文件名:“1”=对象名称跟随。“0”=接下来捕获的是长度倍增器。“1”不总是接收到的。但是,“0”总是接收到的。
使用“1”捕获的情况下如下:
START|(1)|NAMEOFGRAPHIC|(0)|(#)|INPUT|INPUT|INPUT|INPUT|... etc
使用“0”(没有捕获到“1”)
START |(0)|(#)|INPUT|INPUT|INPUT|INPUT|……等等
“长度倍增器”位(总是跟随“0”)是要跟随的INPUT组数。 “组”是4x INPUT的一组。因此,如果是“4”,我要完全捕获的字符串如下所示:
使用“1”:
START|(1)|NAMEOFGRAPHIC|(0)|(4)|INPUT|INPUT|INPUT|INPUT|INPUT|INPUT|INPUT|INPUT|INPUT|INPUT|INPUT|INPUT|INPUT|INPUT|INPUT|
使用“0”:
START |(0)|(4)|INPUT|INPUT|INPUT|INPUT|INPUT|INPUT|INPUT|INPUT|INPUT|INPUT|INPUT|INPUT|INPUT|INPUT|INPUT|INPUT|
每次接收INPUT时,都会在其后添加一个管道符号。我想使用管道来监视输入的长度,以基于数字捕获3x INPUT,例如如果数字为5,那么之后会捕获5x INPUT(包括所有管道)。完成此操作后,该函数将将完全捕获的字符串发送给其他函数以供使用。
我在努力解决收到该完整字符串的接收函数方面出现了问题。我尝试在不同的循环函数中计算管道数,但所有函数都会产生错误。
尝试包括(请理解我对所有这些都很新):
local buffer = ""
function pipe_count(input)
a = "|"
buffer = buffer..input.."|"
while #a < 5 do
buffer = buffer..input.."|"
return buffer
end
end
local buffer = ""
function pipe_count(input)
buffer = buffer..input.."|"
mult = tonumber(buffer:match("(.-|.-|.-|(%d)|.*)"))
while buffer do
for i = 1, mult do
buffer = buffer..input.."|"
end
return buffer
end
这是我尝试的两个示例。我删除了其他徒劳的尝试来捕获确切的字符串长度。我的当前问题是,它正在将INPUT捕获,并在捕获整个字符串之前发送到下一个函数。因此,如果我接收了顶部的字符串,它将如下所示:
`INPUT`
`INPUT|INPUT`
`INPUT|INPUT|INPUT`
`INPUT|INPUT|INPUT|5`
`INPUT|INPUT|INPUT|5|INPUT`
`INPUT|INPUT|INPUT|5|INPUT|INPUT`等等
直到最终接收到以下字符串:
`INPUT|INPUT|INPUT|5|INPUT|INPUT|INPUT|INPUT|INPUT|`
此时,我的文件运行正常。但是在此之前,由于函数的参数没有完全满足,我会出现错误。
理想情况下,我希望在继续之前获得最后一个字符串。
如有任何想法,将不胜感激。谢谢。
ETA:这些INPUT正在填充缓冲区。我希望检查数字负责仅在长度值满足时使用字符串。再次感谢所有输入。谢谢。
ETA:尝试过的示例代码和更多详细信息。
- 如何将两个不同的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中获取用户配置主目录的跨平台方法
Lua 中的所有字符串都是内部化的,因此通常最好将字符串推送到数组中,而不是反复重新构建相同的字符串。此示例从 stdin 逐行输入。3 个数据输入,紧随其后的是一个数字,后跟该数字的数据输入。有很多其他的方法来完成这个任务,但这个方法很容易跟随。
local buffer = {} function process_input(input) if #buffer == 3 then input = tonumber(input) end table.insert(buffer,input) if #buffer > 4 and #buffer == buffer[4] + 4 then local pipe_delim = table.concat(buffer,'|') buffer = {} return pipe_delim end end repeat local input = io.read() local pipe_delim = process_input( input ) if pipe_delim then print('Got:', pipe_delim) end until false