我试图在敏感的情况下按字符串大小写匹配两个表。
示例
[6] =
{
["itemName"] = [Ore],
["cleanName"] = [[Iron Ingot]],
["secs"] = 25004,
["gN"] = [[Luminary]],
["buyer"] = [[@Naptha42]],
["eventType"] = 15,
["timestampz"] = 1399514069,
["quantity"] = 100,
["soldAmount"] = 500,
["seller"] = [[@FataI]],
},
我尝试将上表格式的项目移动到新表格中,或将其过滤到列表中。
g = e.cleanName
for k, v in pairs(savedTable.ALL_ITEMS) do searchTable[k] = v
if g == savedTable.ALL_ITEMS.cleanName then
table.insert(searchTable, savedTable.ALL_ITEMS)
end
end
上面的问题是g never = that savedTable。
该表有几千个条目,我试图通过搜索显示,我相信最好的方法是创建一个值为im的新表?
或者有没有办法使用string.match迭代表并仅显示(打印)这些值。
//更新 我有一个主动搜索,每次用户输入一个字母,它将搜索表格。 例。 Val1 ="你好" Val2 ="再见" Val3 ="嗨"
搜索时,用户输入" H"或" h"我希望结果为"你好,嗨"出现但不是"再见"
so with the if g == string.match(savedTable.ALL_ITEMS.cleanName)
不确定这是否正确。
//更新有效的解决方案(感谢ESOUI)
local searchForItem = string.lower(g)
for k, v in ipairs(myTable.ALL_SALES) do
-- if string.lower(g) == string.lower(v.cleanName) then
if string.lower(v.cleanName):find(searchForItem) then
if v.cleanName ~= nil then
table.insert(searchTable, v)
end
end
end
答案 0 :(得分:2)
如果ALL_ITEMS
是包含表格的表格,那么它就不会直接拥有cleanName
字段。
循环中的==
是否针对v
?
此外,如果ALL_ITEMS
是整数索引,您可能希望ipairs
而不是pairs
按顺序遍历表格。
为什么要将每个元素插入searchTable
(通过searchTable[k] = v
),然后还再次尝试插入匹配的条目(通过table.insert
)?< / p>
如果您需要,可以使用string.match将g
与循环中的cleanName
匹配,但如果您不进行比较,则无法解决问题你认为你在比较什么。