在Lua中将字符串拆分成相等的块

Kee*_*per 2 string lua

我需要将字符串分割成相等大小的块(如果不能将字符串长度除以余数,则最后一个块可以更小)。

假设我有一个包含2000个字符的字符串。我想将此字符串分割成等长的500个字符的块,因此最终得到4个500个字符的字符串。

当初始字符串的长度和块大小都不固定时,如何在Lua中完成此操作?

字符串:“ 0123456789”(长度= 10)应分为3个字符的字符串

结果:“ 012”,“ 345”,“ 678”,“ 9”

(结果是在表中还是由迭代器返回都没有关系)

Yu *_*Hao 5

要将字符串拆分为 4,您可以获得如下大小:

local str = "0123456789" 
local sz = math.ceil(str:len() / 4)
Run Code Online (Sandbox Code Playgroud)

那么第一个字符串是str:sub(1, sz),剩下的就交给你了。


rsc*_*rsc 5

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)