【问题标题】:How to check if value is string in lua?如何检查值是否是lua中的字符串?
【发布时间】:2022-01-23 05:36:30
【问题描述】:

大家好,我需要你的帮助。 我有值,其中大多数是数字,但其中一些是字符串。 如何检查值是字符串还是数字?

我已经尝试过这段代码,但是当它达到字符串值时,我得到错误“尝试对本地'numberValue'(一个零值)执行算术”

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

【问题讨论】:

  • lua 中有一个函数叫做type,你可以像type(value) == "number" 一样使用它,只有当value 是一个数字时才会这样。
  • 很高兴知道,但我发现我所有的值都是字符串,但有些主题是数字,可以是“tonumber”,其中一些只是字符。
  • 我找到了解决方案 strmatch(val,"%d") ,无论如何感谢您的帮助
  • 如果这解决了您的问题,您不应该问“如何检查值是否为字符串”,因为您显然想知道字符串是否包含数字。如果这解决了你的问题。

标签: lua


【解决方案1】:

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

  • 您有 2 个ends 给许多人。
  • 它是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
-- at this point you know numberValue is a number

因此,如果您想编写一个确保字符串表示数字的函数,您可以执行以下操作:

function IsNumber(value)
  return tonumber(value) and true or false
end

【讨论】:

  • 正如我之前写的那样解决了我的问题 strmatch(val,"%d") ,我需要检查字符串中的值是否为数字。那些 2 nills 检查是因为 api 有时返回“nill”有时会出现“nil”和条件语句,因为我希望我的方法返回真或假而不是数字。无论如何我的问题已经解决了。
  • 你不明白我的意思。 somenumber == 1 解析为真或假。不是数字。所以你基本上是在使用条件语句将 true 转换为 true 并将 false 转换为 false。
猜你喜欢
  • 2017-01-20
  • 1970-01-01
  • 2020-03-25
  • 2013-11-08
  • 2012-08-20
  • 1970-01-01
  • 1970-01-01
  • 2012-05-06
  • 1970-01-01
相关资源
最近更新 更多