【问题标题】:Iterate through LUA Table for string match遍历 LUA 表以进行字符串匹配
【发布时间】:2014-06-25 13:55:26
【问题描述】:

我正在尝试按敏感字符串大小写匹配两个表。

例子

[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。

该表有几千个条目,我正在尝试通过搜索显示,我相信最好的方法是创建一个包含我正在寻找的值的新表?

或者有没有办法使用 string.match 来遍历表并仅显示(打印)这些值。

//更新 我有一个主动搜索,每次用户输入一个字母时,它都会搜索表格。 例子。 Val1 =“你好” Val2 =“再见” Val3 =“嗨”

在搜索并且用户输入“H”或“h”时,我希望显示“hello, hi”的结果,但不显示“goodbye”

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

【问题讨论】:

  • 对于不区分大小写的比较,您可以使用if string.lower(val1)==string.lower(val2)。剩下的,你还不清楚你要做什么。
  • 您必须清楚地说明您在帖子中提到的项目之间的关系。比如savedTablesearchTable在哪里,它们长什么样子?

标签: scripting lua add-on lua-table


【解决方案1】:

如果ALL_ITEMS 是一个包含表的表,那么它永远不会直接包含cleanName 字段。

循环中的== 是否旨在对抗v

另外,如果ALL_ITEMS 是整数索引,您可能希望ipairs 而不是pairs 按顺序遍历表格。

您为什么要将每个元素插入searchTable(通过searchTable[k] = v)然后尝试再次插入匹配的条目(通过table.insert)?

如果需要,您可以使用 string.match 将 g 与循环中的 cleanName 进行匹配,但如果您不比较您认为正在比较的内容,那将无法解决问题。

【讨论】:

  • 感谢所有 cmets。我已经开始工作了...还有很长的路要走,但您的指导有所帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-27
  • 2017-03-03
  • 1970-01-01
  • 2021-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多