我有一个正常运行的代码。他打印“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).
答案 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