为什么在Lua 5.1/luajit中if 变量~= "文本" 不起作用?

我是Lua的新手,我本来精通汇编语言。我正在解析一个文本文件,搜索一行文本中的特定字符串(在表中引用),并在逐行进行时编写一个新文件。一旦找到并替换了字符串,我希望它跳过搜索以增加速度,并将每行写入EOF。

此例程是多用途的,因此可以使用任意数量的行表。

大多数内容都不相关,只是不能理解为什么'**如果模式[x] ~= "STOP" ,则不起作用。第二次出现'似乎退出或绕过“v:bfind”代码。也许我错过了什么,或者应该使用string.match?

local uiBoot = "uiBoot.txt"
local uiBootpattern = {[[BlendTime F32(0.3000000119)]],
[[.BlendTime F32(0.1);]],
[[STOP]],
}

function cb_fastmenu(file,pattern)
    local fastmenu = function(pattern)
    local x = 1
    local k,v
    for k,v in ipairs(bs_old) do
        if pattern[x] ~= "STOP" then <--------不起作用
            if v:bfind(sprot2(pattern[x]))then
                bs_old[k] = pattern[x+1]
                x = x+2
            end
        end
        add(v) --将行添加到文件
    end
    end
    cb_add(fastmenu,{pattern},file,truetrueend

非常感谢任何帮助。当有人解释时,我可能会面对掌声。希望还有一种优化的方法。

点赞