Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 在Lua中将字符串分成相等的块_String_Lua - Fatal编程技术网

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

String 在Lua中将字符串分成相等的块,string,lua,String,Lua,我需要将一个字符串拆分为大小相等的块(如果字符串长度不能被拆分而没有余数,则最后一个块可以更小) 假设我有一个2000字符的字符串。我想把这个字符串分成大小相等的500个字符的块,这样我就得到了4个500个字符的字符串 当初始字符串的长度和块大小都不固定时,如何在Lua中实现这一点 示例 字符串:“0123456789”(长度=10)应拆分为3个字符的字符串 结果:“012”、“345”、“678”、“9” (不管结果是在表中还是由迭代器返回)要将字符串拆分为4,可以得到如下大小: local

我需要将一个字符串拆分为大小相等的块(如果字符串长度不能被拆分而没有余数,则最后一个块可以更小)

假设我有一个2000字符的字符串。我想把这个字符串分成大小相等的500个字符的块,这样我就得到了4个500个字符的字符串

当初始字符串的长度和块大小都不固定时,如何在Lua中实现这一点

示例

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

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


(不管结果是在表中还是由迭代器返回)

要将字符串拆分为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