You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Lua字符串按每n个字符进行分割?

Lua按指定长度分割字符串的实现方法

针对你需要将字符串按每n个字符分割的需求,这里提供两种实用的实现方式:

方法一:使用string.gmatch模式匹配

利用Lua的字符串匹配函数,构造对应模式直接提取每n个字符的块:

local n = 2
local Name = "JohnIsNice"
local result = {}
-- 构造匹配模式:匹配任意n个连续字符
for chunk in string.gmatch(Name, ".{" .. n .. "}") do
    table.insert(result, chunk)
end
-- 此时result即为{"Jo", "hn", "Is", "Ni", "Ce"}

这种方式代码简洁,适合字符串长度恰好是n整数倍的场景。如果字符串长度不是n的整数倍,最后不足n的部分会被忽略。

方法二:手动索引遍历截取

通过遍历字符串索引,使用string.sub逐个截取指定长度的子串,兼容所有长度的字符串:

local n = 2
local Name = "JohnIsNice"
local result = {}
local str_len = #Name
-- 从索引1开始,每次步长为n,截取i到i+n-1的子串
for i = 1, str_len, n do
    table.insert(result, string.sub(Name, i, math.min(i + n - 1, str_len)))
end
-- 同样得到目标结果{"Jo", "hn", "Is", "Ni", "Ce"}

这里用math.min确保最后一次截取不会超出字符串长度,即使字符串长度不是n的整数倍,最后一段不足n的字符也会被保留。

内容的提问来源于stack exchange,提问作者sheepminecraft

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 01:39:58