我需要将一个字符串拆分成相同大小的块(如果字符串长度不能被分割,则最后一个块可以更小)。
我们说我有一个带有2000个字符的字符串。我想把这个字符串分成500个字符的相同大小的块,所以我最终会得到4个500字符的字符串。
如果初始字符串的长度既不固定又不是块大小,怎么能在Lua中完成呢?
示例
字符串:" 0123456789" (长度= 10)应分为3个字符的字符串
结果:" 012"," 345"," 678"," 9"
(如果结果在表中或由迭代器返回,则无关紧要)
答案 0 :(得分:4)
要将字符串拆分为4,您可以获得如下大小:
local str = "0123456789"
local sz = math.ceil(str:len() / 4)
然后第一个字符串是str:sub(1, sz)
,我将剩下的留给你。
答案 1 :(得分:4)
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
答案 2 :(得分:0)
> function tt(s)
>> local t={}
>> for p in s:gmatch("..?.?") do
>> t[#t+1]=p
>> end
>>
>> for i,v in ipairs(t) do
>> print(i, v)
>> end
>> end
> tt("0123")
1 012
2 3
> tt("0123456789")
1 012
2 345
3 678
4 9
> tt("012345678901")
1 012
2 345
3 678
4 901