把字符串当数组用 s[1] 取第一个字符——表的下标语法对字符串无效,s[1] 是一次表的索引,结果是 nil 还不报错;字符串取字符只有 sub 与 byte 两条路。错误场景:
local s = "ABC"
print(s[1])
输出 nil——不报错、不报错才最容易骗过新手:以为取到了,其实取到的是空。
取字符用 string.sub 按位置截取,取字节码用 string.byte。规范写法。示例代码如下:
local s = "ABC"
print(string.sub(s, 1, 1))
print(string.byte(s, 1))
输出 A 与 65——sub 返回字符、byte 返回字节码,按需选用。
三步验证:s[1] 复现 nil 输出;sub 取首字符得 A;byte 取首字节得 65(A 的 ASCII 码);再对 s[0] 与 s[4] 验证越界同样是 nil——字符串的越界与表一样安静。
byte 配循环可以逐字节处理,比循环 sub 每次建新串更省。示例代码如下:
local s = "ABC"
for i = 1, #s do
print(i, string.char(string.byte(s, i)))
end
char 与 byte 互为逆操作——逐字节扫描、校验和计算都走这条路。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏】 一、业务场景 深夜在线的成员没活动可参加,帮会夜场形同虚设。更夫玩法上线:帮会更夫沿固定路线走街报时,成员陪同巡更…
【游戏】 一、业务场景 巡逻玩法清一色打怪刷分,缺一个有剧情张力的夜场任务。捕快缉拿上线:每天刷新一名在逃逃犯藏进城内某处,…
【语法】 一、隐蔽陷阱 整点奖励用秒级触发器反复检查,同一个小时里条件一直成立,奖励被领了一整次又一次——缺一道"刻度变化才…
【语法】 一、隐蔽陷阱 6 支队伍打单循环,每队要与其他 5 队各碰一次、共 15 场——随手排的赛程不是这轮有队轮空两回,…
【游戏】 一、业务场景 冬季庆典缺一个动手类比赛,纯投票类活动又被小号刷票刷到失真。冰雕大赛改规则:限时 40 分钟现场雕刻…
【语法】 一、隐蔽陷阱 电梯收到 3 层上行、7 层上行、2 层下行、9 层下行的请求,先来先服务会让它 1 到 3 到 7…