使用 gmatch 捕获来索引表

问题描述 投票:0回答:1

我想获取索引和x值。从 gmatch 函数中, i 是字符,所以我失败了这个代码。我想获取值和索引。这有什么解决办法吗?

val[1] = 24
fx = {}

for i, x in response_body[1]:gmatch([["(%w+)lId"%s*:%s*(%d+)]]) do
fc[i] = x
print(x)
end
/* x prints 14
            18
            23 */

if (val[1] ~= fc[1] and val[1] ~= fc[2] and val[1] ~= fc[3] ) then
val[1] = fc[1]

else
val[1] = val[1]
end
string lua pattern-matching openwrt
1个回答
1
投票

string.gmatch
返回字符串。所以
i
x
都是代码中的字符串,当然前提是你有匹配项。

f[1]
f["1"]
不同。

因此,在您的代码中

fc[1]
等是
nil
值,因此不能等于
24

您可以使用

tonumber
string
转换为
number
值。但请记住,转换与
%w
匹配的字母数字字符不一定可以转换为数字。你必须避免使用 nil 作为表索引,否则你会得到一个错误。

© www.soinside.com 2019 - 2024. All rights reserved.