Lua - 如何在表格中使用运算符“和”?

时间:2018-03-16 12:07:43

标签: lua

我有一个正常运行的代码。他打印“ok”。

data = "on482654225954"

  if data:find("on.") then
    start, stop = data:find("on.")
    local a = 0 
    for i=stop,stop+11 do
      if data:sub(stop+a,stop+a):match("[0-9]") then
        t = { [a] = data:sub(stop+a,stop+a) }
        a = a + 1 
        if t[0] == "4" then
          print("ok")
        end
      end
    end
  end

以下代码无效。它不打印“ok”。

data = "on482654225954"

  if data:find("on.") then
    start, stop = data:find("on.")
    local a = 0 
    for i=stop,stop+11 do
      if data:sub(stop+a,stop+a):match("[0-9]") then
        t = { [a] = data:sub(stop+a,stop+a) }
        a = a + 1 
        if t[0] == "4" and t[5] == "4" and t[11] == "4" then
          print("ok")
        end
      end
    end
  end

如何让上述代码正常运行?

修改

节目输出。

Program 'lua.exe' started in 'C:\Users\pic.pic-Komputer\Downloads\ZeroBraneStudio\myprograms' (pid: 2628).
0   4
1   8
2   2
3   6
4   5
5   4
6   2
7   2
8   5
9   9
10  5
11  4
Program completed in 0.06 seconds (pid: 2628).

2 个答案:

答案 0 :(得分:0)

t是一个永远不会包含多个元素的表。

t = { [a] = data:sub(stop+a,stop+a) }
a = a + 1 
if t[0] == "4" and t[5] == "4" and t[11] == "4" then
   print("ok")
end

如果你只有1个元素,你就永远不会有3个元素同时具有某个值。

答案 1 :(得分:0)

在我看来,您的代码可以替换为:

if data:match("on4....4.....4") then
   print("ok")
end