按空格切词,学员手写循环找空格再 sub 逐段切——要处理连续空格、首尾空格两类边界,漏一个就切出空串。gmatch 配 "%S+" 一次拿到全部单词,边界代码一行都不用写。错误场景:
local s = " 攻 沙巴 克 "
-- 手写循环找空格切词,连续空格切出空词
手写切词的边界清单很长:首尾空格、连续空格、制表符——每一项都是一个潜在 bug。
gmatch 配 "%S+"(非空白序列)直接迭代所有单词。规范写法。示例代码如下:
local s = " 攻 沙巴 克 "
for w in string.gmatch(s, "%S+") do
print("[" .. w .. "]")
end
输出 [攻] [沙巴] [克]——连续空格与首尾空格自动跳过,零边界代码。
三步验证:用多空格串验证 %S+ 不产空词;统计单词个数与手工一致;把分隔符换成逗号(模式 "[^,]+")验证任意分隔符的通用性。
分词配表收集就是通用的 split 函数。示例代码如下:
local function split(s, sep)
local out = {}
for part in string.gmatch(s, "([^" .. sep .. "]+)") do
out[#out + 1] = part
end
return out
end
local parts = split("指令,参数一,参数二", ",")
print(#parts, parts[2])
输出 3 与 参数一——split 一次封装,聊天指令解析直接复用。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【语法】 一、隐蔽陷阱 对比两份任务记录的"共同路线":要求连续的子串可以逐位比对,允许跳过中间步骤的最长公共子序列却没法直…
【游戏】 一、业务场景 新玩家出门就挨打,图文教学没人看,第二天流失率居高不下。训练营上线:三个分阶关卡(走位、连招、节奏)…
【语法】 一、隐蔽陷阱 五只猴子分桃,每来一只把桃分成 5 份多 1 个扔掉再拿走一份。正向从 1 个桃开始试,试到几千个才…
【游戏】 一、业务场景 满级玩家装备毕业后一周流失,进度条走到头没了盼头。渡劫玩法上线:80 级可挑战三重天劫,全通获得渡劫…
【语法】 一、隐蔽陷阱 63 分找零用面额 1、5、10、25 的硬币,贪心取最大面额 6 枚搞定;可换成面额 1、3、4 …
【游戏】 一、业务场景 会长每天手动发福利、清名单、盯报名,帮务占满游戏时间,连着三周漏发福利被帮众催。帮会管家上线:每周 …