首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Lua检查字符串是否为十进制整数

Lua检查字符串是否为十进制整数
EN

Stack Overflow用户
提问于 2020-06-29 16:04:27
回答 2查看 2.3K关注 0票数 2

如何判断一个字符串在lua中是否为整数?例如isInteger("123"),应该是真的。isIntger("abc")isIntger("12.3")应该为false。

EN

回答 2

Stack Overflow用户

发布于 2020-06-29 16:25:05

从Lua5.2开始,你可以使用tonumber来实现这一点。如果将第二个参数放入其中,则该字符串将被视为一个数字,在base中应为整数

代码语言:javascript
复制
print(tonumber("145.5", 10)) -- nil
print(tonumber("145", 10)) -- 145
print(tonumber("-145", 10)) -- -145

在Lua5.1中,这种情况是不同的,因为即使指定了basetonumber也可以接受任何数字,而不仅仅是整数。我可能会使用string.match

代码语言:javascript
复制
print(("145.5"):match("^%-?%d+$")) -- nil
print(("145"):match("^%-?%d+$")) -- "145"
print(("-145"):match("^%-?%d+$")) -- "-145"

模式在5.4.1一节中进行了描述。

有了这些值,您就可以在需要时轻松地将它们用作布尔值,也可以在需要时将它们用作实际的整数。如果您正在寻找更简单的仅限严格布尔值的结果,请参阅Piglet的答案;它更好地描述了这种意图。我很少遇到这样的需求,因此我建议使用nil/value替代方案。这是Lua中常用的方法。

票数 5
EN

Stack Overflow用户

发布于 2020-06-29 16:25:04

您可以简单地搜索任何不是数字的内容。

代码语言:javascript
复制
local function isInteger(str)

  return not (str == "" or str:find("%D"))  -- str:match("%D") also works

end
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62633698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档