在Lua中以相同的块分割字符串

时间:2014-08-27 12:19:14

标签: string lua

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

我们说我有一个带有2000个字符的字符串。我想把这个字符串分成500个字符的相同大小的块,所以我最终会得到4个500字符的字符串。

如果初始字符串的长度既不固定又不是块大小,怎么能在Lua中完成呢?

示例

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

结果:" 012"," 345"," 678"," 9"

(如果结果在表中或由迭代器返回,则无关紧要)

3 个答案:

答案 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