String 在Lua中将字符串分成相等的块
我需要将一个字符串拆分为大小相等的块(如果字符串长度不能被拆分而没有余数,则最后一个块可以更小) 假设我有一个2000字符的字符串。我想把这个字符串分成大小相等的500个字符的块,这样我就得到了4个500个字符的字符串 当初始字符串的长度和块大小都不固定时,如何在Lua中实现这一点 示例 字符串:“0123456789”(长度=10)应拆分为3个字符的字符串 结果:“012”、“345”、“678”、“9”String 在Lua中将字符串分成相等的块,string,lua,String,Lua,我需要将一个字符串拆分为大小相等的块(如果字符串长度不能被拆分而没有余数,则最后一个块可以更小) 假设我有一个2000字符的字符串。我想把这个字符串分成大小相等的500个字符的块,这样我就得到了4个500个字符的字符串 当初始字符串的长度和块大小都不固定时,如何在Lua中实现这一点 示例 字符串:“0123456789”(长度=10)应拆分为3个字符的字符串 结果:“012”、“345”、“678”、“9” (不管结果是在表中还是由迭代器返回)要将字符串拆分为4,可以得到如下大小: local
(不管结果是在表中还是由迭代器返回)要将字符串拆分为4,可以得到如下大小:
local str = "0123456789"
local sz = math.ceil(str:len() / 4)
那么第一个字符串是str:sub(1,sz)
,其余的留给您。s=“0123456789”;k=3;t={s:match('('.('.('.?'):rep(k)…')):rep(math.ceil(#s/k))}
大概是说“块”,你指的是字符?Lua字符串是已计数的字节序列。一般来说,如果不检查每个字符或图形,就无法知道字符或图形中的字节数,因此划分并不总是有意义的。您使用的是哪种字符集和编码?每个字符正好有一个字节的字符(例如Windows-1252)?每个字符正好有4个字节(例如UTF-32)?一到四个字节(UTF-8)还是两到四个字节(UTF-16)?具有组合字符(Unicode)或不具有组合字符(Windows-1252)的字符集?
> 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
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