向表中插入单词

  • 本文关键字:单词 插入 lua
  • 更新时间 :
  • 英文 :


所以,我有一个脚本,我在一个字符串中输入3个单词,并把它们放入一个小表,我只需要这个脚本打印一个新的表,我可以复制和粘贴,所以我只需要打印表看起来像这是脚本目前有

local tbl = {
{1, "", 0},
{2, "", 0},
{3, "", 0}
}

local input = "i hate debugging"
local words = {}
x = 0
repeat
x = x + 1
for i, v in ipairs(tbl) do
if tonumber(v[1]) == x then
for word in input:gmatch"[^ ,rn]+" do

table.insert(words, word)
end
end
end
until x == 1

,期望的输出应该如下所示

{1, "i", 0},
{2, "hate", 0},
{3, "debugging", 0},

这个问题不是很清楚,OP的目标也不清楚,但似乎您可能想要这样的东西:

local tbl = {
{ 1, "", 0 },
{ 2, "", 0 },
{ 3, "", 0 }
}
local input = "i hate debugging"
local nextWord = input:gmatch"[^ ,rn]+"
for k, t in ipairs(tbl) do
t[2] = nextWord() or ""
end
-- Display updated `tbl`
print("updated tbl")
for k, v in ipairs(tbl) do
print(string.format('{ %d, "%s", %d },', v[1], v[2], v[3]))
end

gmatch返回一个迭代器,因此您可以重复调用该迭代器以获得连续匹配。可以在tbl上循环,每次调用迭代器来设置字符串。当迭代器没有匹配时,它将返回nil,因此当迭代器耗尽时,代码将字符串设置为""

程序输出:

updated tbl
{ 1, "i", 0 },
{ 2, "hate", 0 },
{ 3, "debugging", 0 },

从输入

创建新表OP在注释中澄清了应该从输入创建一个新表。下面是一个函数createWordTable,它从一个字串中创建并返回一个新表。printWordTable函数只是一个显示单词表内容的实用函数。

function createWordTable(wordString)
local wordTbl = {}
local i = 1
for w in wordString:gmatch"[^ ,rn]+" do
wordTbl[i] = { i, w, 0 }
i = i + 1
end
return wordTbl
end
function printWordTable(wordTbl)
for k, v in ipairs(wordTbl) do
print(string.format('{ %d, %s, %d }', v[1], v[2], v[3]))
end
end

样本互动:

> wtbl = createWordTable("one, two, three")
> printWordTable(wtbl)
{ 1, one, 0 }
{ 2, two, 0 }
{ 3, three, 0 }
> wtbl = createWordTable("one, two, three, four, five") 
> printWordTable(wtbl)
{ 1, one, 0 }
{ 2, two, 0 }
{ 3, three, 0 }
{ 4, four, 0 }
{ 5, five, 0 }

最新更新