string - 使用 gmatch 捕获来索引表

标签 string lua pattern-matching openwrt

我想获取索引和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.gmatch 返回字符串。因此,ix 都是代码中的字符串,前提是您当然有匹配项。

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

因此,在您的代码中 fc[1] 等是 nil 值,因此不能等于 24

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

关于string - 使用 gmatch 捕获来索引表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47575620/

相关文章:

python - 使用多个分隔符分隔字符串并仅提取单个字符

lua - 使用 Lua 脚本的多个 HMSET 到 Redis

lua - 如何使用字符串键保持 Lua 表的顺序?

Haskell 模式匹配——如何使用常量变量

regex - 删除一个字段中具有特定模式的行

scala - 为什么 Scala 在第一种情况下会警告类型删除而不是第二种情况?

php - preg_replace() 和\n 在一个字符串中

Python : Splitting a string by numbers, 字母和 -_

javascript - 正则表达式提取括号中的单词不起作用

c++ - 在 C++ 中删除我所有的 Lua 用户数据