【发布时间】:2026-01-23 13:10:02
【问题描述】:
我正在使用 Corona SDK 开发一个游戏项目,但遇到了问题。我正在尝试在 for 循环中使用 string.find() 来测试以确定某个值是否在某个表中,如果是,则将该值添加到另一个表中。我的问题是,由于在这种情况下 string.find()/string.match 不会读取重复项(假设 for 循环是原因)。在“复制”表中,我基本上只有“1102”、“1103”而不是“1102”、“1102”、“1103”、“1102”,这就是我试图做到这一点的方式。有什么建议吗?
database =
{
{name="test", serial="1102", img="src/1.png"},
{name="test2", serial="1103", img="src/2.png"},
{name="test3", serial="1104", img="src/3.png"}
}
list =
{
"1102",
"1102",
"1103",
"1102"
}
copy = {}
n=1
for i=1, #database do
if string.find(database[i].serial, tostring(list[n])) then
table.insert(copy, database[i].img)
n=n+1
end
end
for i=1, #copy do
print(copy[i])
end
【问题讨论】:
-
tostring(list[n])中的n是什么?如果serial匹配list中的任何 个值或特定值,您想匹配database中的值吗?list中的重复元素是什么意思? -
意味着添加 n=1,因此每个查找都是 n=n+1 以转到下一个索引。基本上我要做的是将“列表”中的序列与“数据库”匹配,每次匹配时,将 img 值添加到“复制”表中。最重要的是,即使对于像 3 个“1102”连续剧这样的重复,我也需要它这样做,按照“列表”中出现的顺序。然后使用复制表绘制图像,甚至复制。我无法弄清楚这一点。我正在考虑一个 for 循环,但我不知道该怎么做。
-
通过您的示例输入,您希望
copy有一个"src/1.png"和一个"src/2.png",这是正确的吗? -
代码读作:src/1.png, src/2.png 然而,它需要读作
src/1.png,src/1.png,src/3.png,src/1.png遵循“列表”的设置方式。 -
我不知道如何以这种方式遍历表格,直到
list将其所有img放入copy