Scripting 遍历LUA表以进行字符串匹配
我正在尝试用字符串区分大小写来匹配两个表 范例Scripting 遍历LUA表以进行字符串匹配,scripting,lua,add-on,lua-table,Scripting,Lua,Add On,Lua Table,我正在尝试用字符串区分大小写来匹配两个表 范例 [6] = { ["itemName"] = [Ore], ["cleanName"] = [[Iron Ingot]], ["secs"] = 25004, ["gN"] = [[Luminary]], ["
[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=savedTable
这个表有几千个条目,我试图通过搜索来显示,我认为最好的方法是创建一个新表,其中包含我要查找的值
或者有没有一种方法可以使用string.match遍历表并仅显示(打印)这些值
//更新
我有一个主动搜索,每次用户输入一封信,它都会搜索表格。
实例
Val1=“你好”
Val2=“再见”
Val3=“你好”
搜索时,用户输入“H”或“H”,我希望显示“hello,hi”的结果,但不显示“再见”
我不确定这是否正确
//更新工作内容的解决方案(感谢ESUI)
如果
ALL_ITEMS
是一个包含表的表,那么它永远不会直接有cleanName
字段
循环中的==
是针对v
的吗
此外,如果ALL_ITEMS
为整数索引,则您可能希望ipairs
而不是pairs
按顺序遍历表
为什么要将每个元素插入searchTable
(通过searchTable[k]=v
),然后还要尝试再次插入匹配项(通过table.insert
)
如果需要,您可以使用string.match将
g
与循环中的cleanName
进行匹配,但如果您不比较您认为正在比较的内容,则这并不能解决问题。对于不区分大小写的比较,您可以执行if string.lower(val1)=string.lower(val2)
。至于其他方面,你还不清楚你想做什么。你必须清楚地说明你在文章中提到的项目之间的关系。例如保存表
和搜索表
在哪里,它们看起来像什么?谢谢大家的评论。我已经让它工作了。。。还有很长的路要走,但是你的方向帮助了我!
so with the if g == string.match(savedTable.ALL_ITEMS.cleanName)
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