如何将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
相关产品推荐
相关产品推荐

