我需要将字符串分割成相等大小的块(如果不能将字符串长度除以余数,则最后一个块可以更小)。
假设我有一个包含2000个字符的字符串。我想将此字符串分割成等长的500个字符的块,因此最终得到4个500个字符的字符串。
当初始字符串的长度和块大小都不固定时,如何在Lua中完成此操作?
例
字符串:“ 0123456789”(长度= 10)应分为3个字符的字符串
结果:“ 012”,“ 345”,“ 678”,“ 9”
(结果是在表中还是由迭代器返回都没有关系)
要将字符串拆分为 4,您可以获得如下大小:
local str = "0123456789"
local sz = math.ceil(str:len() / 4)
Run Code Online (Sandbox Code Playgroud)
那么第一个字符串是str:sub(1, sz),剩下的就交给你了。
local function splitByChunk(text, chunkSize)
local s = {}
for i=1, #text, chunkSize do
s[#s+1] = text:sub(i,i+chunkSize - 1)
end
return s
end
-- usage example
local st = splitByChunk("0123456789",3)
for i,v in ipairs(st) do
print(i, v)
end
-- outputs
-- 1 012
-- 2 345
-- 3 678
-- 4 9
Run Code Online (Sandbox Code Playgroud)