如何在 lua 中将字符串转换为布尔值

How to convert string to boolean in lua

我从另一个脚本接收到数据,其中变量的值为“false”或“true”。我想在 lua 数据类型中将此值转换为 true 或 false。目前,我可以走这么远的路:

if value == "false" then
  value=false
elseif value == "true" then
  value=true
end

有没有最简单的方法来转换它,比如将字符串转换为整数 tonumber("1")

不,因为"false"也会计算为true,所以如果你想让"false"计算为false,你必须手动转换它。

由于我经常对接收到的每个数据进行转换,因此像我在上面发布的那样手动将字符串转换为布尔值会使代码变得多余。所以我创建了一个函数来克服这个问题:

function toboolean(str)
    local bool = false
    if str == "true" then
        bool = true
    end
    return bool
end

所以我可以做到这一点

toboolean("true") 

除“true”字符串以外的任何内容都将变为 false

您也可以这样做:

stringtoboolean={ ["true"]=true, ["false"]=false }
print(stringtoboolean[s])

大小写独立方式:

function str_to_bool(str)
    if str == nil then
        return false
    end
    return string.lower(str) == 'true'
end