【问题标题】:Print value from a lua table if pattern matches如果模式匹配,则从 lua 表中打印值
【发布时间】:2014-10-04 20:02:18
【问题描述】:

好的,所以我最近才进入 lua,发现自己陷入了以下困境:

我有函数 peripheral.getNames()(这是一个自定义函数)

它将返回一个结构为 key,value 的表,而 key 始终是一个数字,从 1 开始,value 将是函数找到的值(它搜索与其连接的设备)

在我的示例中,它创建了一个如下所示的表

1 herp
2 derp
3 monitor_1
4 morederp

我可以使用以下内容打印值

local pgn = peripherals.getNames()

for key,value in pairs(pgn) do
 setCursorPos(1,key)
 write(value)
 end
end

这将像这样在我的显示器上输出相应的表格值

herp
derp
monitor_1
morederp

现在,我尝试过滤我的结果,以便仅在 value 包含“monitor”时打印一些内容

我试图通过

for key,value in pairs(pgn) do
 if string.match(value, monitor) then
 #dostuff
 end
end

但它总是返回 'bad argument: string expected, got nil' 所以很明显 string.match 要么不接受“值”,要么值不是字符串 所以我先尝试转换值

for key,value in pairs(pgn) do
 value = tostring(value)
  if ....
 #dostuff
 end
end

但还是会报同样的错误

你们中有人知道我如何让 string.match 接受“值”,或者在这个 for 循环中是否有另一种方法来检查模式的“值”内容?

【问题讨论】:

    标签: regex lua minecraft lua-table lua-patterns


    【解决方案1】:

    错误消息是关于变量monitor,它没有定义,所以有一个零值。

    试试string.match(value, "monitor")

    【讨论】:

    • 谢谢!也许我应该喝杯咖啡……不知道我必须为指定的模式使用引号。
    猜你喜欢
    • 1970-01-01
    • 2015-04-25
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-13
    • 1970-01-01
    相关资源
    最近更新 更多