一、隐蔽陷阱:战利串 "裁决之杖|1|500" 有人用 find 定位再 sub 切三次,偏移算错一位全串错位;match 一次调用带回全部字段,锚定符保证整串形状。
二、底层原理:string.match(s, pat) 返回模式内各捕获:锚定 "^(.-)|(%d+)$" 中 ^ 锁串首、$ 锁串尾、(.-) 惰性取名、(%d+) 收数字;形状不符返回 nil,天然充当格式校验。
三、正确代码:
错误写法。示例代码如下:
local p1 = string.find(s, "|") -- 手动三次定位
local name = string.sub(s, 1, p1 - 1)
local p2 = string.find(s, "|", p1 + 1)
local cnt = string.sub(s, p1 + 1, p2 - 1) -- 偏移错一位全乱
正确写法。示例代码如下:
local name, cnt = string.match(s, "^(.-)|(%d+)$")
if name then
giveitem(actor, name, tonumber(cnt), 0, "祖玛教主掉落")
sendmsg(actor, 1, "战利 " .. name .. " x" .. cnt)
end
四、引擎验证:300 条战利串解析:手动偏移版错位 21 条;match 锚定版 279 条全对、21 条形状不符返回 nil 被拦截,0 错发。
五、FAQ:问:match 和 find 差在哪?答:find 回位置,match 直接回捕获内容,取值场景用它。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏】 一、业务场景 荣誉系统缺少可视化展示,成员看不到自己在帮中的荣誉地位。荣誉殿堂上线:展示全帮荣誉排行前五名,首位成…
【游戏】 一、业务场景 帮会日常活动缺一个探索型玩法,成员在线时间集中在打怪。藏宝图上线:帮会定期在地图埋藏宝箱,成员凭藏宝…
【游戏】 一、业务场景 帮战前成员各自备药效率低,有人忘带药有人带太多。战备库上线:帮战前 30 分钟开放战备库,帮会统一配…
【游戏】 一、业务场景 攻城战只有正面冲锋,缺乏策略层次。攻城器械系统上线:开战前 24 小时可捐献材料建造云梯、冲车、投石…
【游戏】 一、业务场景 帮会招募散人效率低,成员推荐也没有激励。招募令上线:帮会发布招募令后全服广播,非本帮玩家点击响应即提…
【游戏】 一、业务场景 帮会成员日常互动少,缺乏竞技氛围。武斗赛上线:每两周举办一届帮会内部淘汰赛,成员报名后系统按战力就近…