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

我从另一个脚本接收了数据,其中变量的值为 "false" 或 "true"。我想将这个值转换为 Lua 数据类型中的 true 或 false。目前,我可以通过以下长方式实现:

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

是否有更简单的方法将字符串转换为整数的方法,如 tonumber("1")。

原文链接 https://stackoverflow.com/questions/69405331

点赞
stackoverflow用户13421306
stackoverflow用户13421306

不行,因为"false"也会被解析为true,所以如果你想让"false"被解析为false,你需要手动进行转换。

2021-10-01 11:47:13
stackoverflow用户8713243
stackoverflow用户8713243

由于我经常需要将收到的每个数据进行转换,手动转换字符串为布尔值,如上所示,会使代码冗余。因此,我创建了一个函数来解决这个问题:

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

这样我就可以这样做:

toboolean("true")

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

2021-10-01 12:10:28
stackoverflow用户107090
stackoverflow用户107090

你也可以这样做:

stringtoboolean={ ["true"]=true, ["false"]=false }
print(stringtoboolean[s])
2021-10-01 12:51:36
stackoverflow用户6146442
stackoverflow用户6146442

不区分大小写的方式:

function str_to_bool(str)
    if str == nil then
        return false
    end
    return string.lower(str) == 'true'
end
2021-11-07 09:00:13