Lua拆分字符串并将输出放入表中

问题描述 投票:0回答:1

我正在尝试使用Lua以最佳方式拆分字符串

我想要达到的输出是这个。

"is"
"this"
"ents"
"cont"
"_"
etc
etc

到目前为止这是我的代码,没有成功

local variable1 = "this_is_the_string_contents"

local l = string.len(variable1)
local i = 0
local r = nil
local chunks = {} --table to store output in

while i < l do
r = math.random(1, l - i)

--if l - i > i then
--r = math.random(1, (l - i) / 2)
--else
--r = math.random(1, (l - i))
--end

print(string.sub(variable1, i, r))

chunks = string.sub(variable1, i, r)
i = i+r 

end
lua
1个回答
0
投票

如果我理解正确,您希望将字符串分成相等的部分。以下将精确地执行此操作并将其存储到表中。

local variable2 = "this_is_the_string_contents"

math.randomseed(os.time())
local l = #variable2
local i = 0
local r = math.random(1, l/2)
local chunks = {}

while i <= l+5 do
    print(variable2:sub(i, i+r))
    table.insert(chunks, variable2:sub(i,i+r))

    i = i+r+1
end

每次运行脚本时都要更改math.randomseed,这是一个好习惯,因此您可以在随机数中获得更多的方差。快速细分,但是。

[local r = math.random(1, l/2):您可以将2更改为所需的值,但是这样做是为了防止脚本将#variable2分配为长度,从而可以将变量作为单个块获取。

[while i <= l+5 do:为预防起见,我添加了+5以解决一些超量情况。

table.insert(chunks, variable2:sub(i, i+r)):这是您需要插入表中的内容。由于我们希望等量,因此您将使用i+r作为结束子。

i = i+r+1:您不想重复字母。

最终结果显示为:

Pass One:
this_is_the
_string_cont
ents   

Pass Two:
thi
s_is
_the
_str
ing_
cont
ents

依此类推。如果这不是您想要的,请提出建议并修改您的问题。如果您想单独存储_而不是单词的一部分,那会更容易,但是按照您描述它的方式,您说的很均匀,所以我暂时保留它。

© www.soinside.com 2019 - 2024. All rights reserved.