如果模式匹配,则从lua表中打印值

时间:2014-08-11 21:23:24

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

好吧,所以我刚刚进入lua并发现自己陷入了以下困境:

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

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

在我的示例中,它创建了一个看起来像这样的表

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

现在,我尝试过滤我的结果,因此只有在值包含' monitor'

时才打印一些内容

我试图用

来实现这个目标
for key,value in pairs(pgn) do
 if string.match(value, monitor) then
 #dostuff
 end
end

但它总是返回错误的参数:字符串预期,得到零' 所以很明显string.match要么不接受' value'或者,value不是字符串 所以我尝试先转换价值

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

但它仍然会抛出相同的错误

你们有没有想过我怎么可能得到string.match来接受' value'或者如果有其他方法来检查“价值”的内容。在这个for循环中的模式?

1 个答案:

答案 0 :(得分:1)

错误消息是在谈论变量monitor,它未定义,因此具有零值。

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