如何在 Lua 中检查值是否为字符串?

大家好,我需要你们的帮助。 我有一些值,其中大部分是数字,但有些是字符串。 如何检查值是否为字符串或数字?

我已经尝试过这段代码,但当它遇到字符串值时,我会收到错误“尝试对本地'numberValue'执行算术运算(nil值)”

function Config:IsNumber(value)
    if value ~=nill or value ~=nil then
        local numberValue = tonumber(value)
        if numberValue/numberValue ==1 then
            return true
        else
            return false
        end
    end
end
end
end

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

点赞
stackoverflow用户2858170
stackoverflow用户2858170

首先让我们从你的代码中开始检查错误。

  • 你有两个多余的 end
  • 它是 nil,不是 nill。我不确定你这个检查的意义在哪里。

其他问题/需要改进的事项:

numberValue / numberValue == 1 没有任何意义。一个数字除以它本身总是等于 1。所以检查它是没有意义的。

另外,下面的代码

if something == 1 then
  return true
else
  return false
end

可以简单地替换为 return something == 1。在这里没有必要使用条件语句。

回答你的问题:

要检查一个值是否为字符串,请使用 type(value) == "string"

要检查一个值是否可以转换为数字,请使用 tonumber(value)。它会返回一个数字或者 nil

所以根据你的错误,转换为数字失败了。

如果你不确定你的值是否可以被转换为数字,那么在对其返回值进行任何操作之前,你应该确保 tonumber 成功。

local numberValue = tonumber(value)
if not numberValue then
  print("converting value to a number failed)
  return
end
-- 在这一点上,你知道 numberValue 是一个数字

因此,如果你想编写一个函数,确保一个字符串表示一个数字,你可以像这样做:

function IsNumber(value)
  return tonumber(value) and true or false
end
2021-12-22 07:13:34