如何确定一个字符串是否是lua中的整数?例如isInteger("123")
,应该是真的。而且isIntger("abc")
和isIntger("12.3")
应该是假的。
从 Lua 5.2 开始,您可以使用它tonumber
来实现。如果你把第二个参数放在里面,字符串将被视为一个数字,应该是一个整数base
:
print(tonumber("145.5", 10)) -- nil
print(tonumber("145", 10)) -- 145
print(tonumber("-145", 10)) -- -145
Run Code Online (Sandbox Code Playgroud)
在 Lua 5.1 中情况有所不同,因为tonumber
即使指定base
接受任何数字,而不仅仅是整数。我可能会使用string.match
:
print(("145.5"):match("^%-?%d+$")) -- nil
print(("145"):match("^%-?%d+$")) -- "145"
print(("-145"):match("^%-?%d+$")) -- "-145"
Run Code Online (Sandbox Code Playgroud)
模式在第5.4.1节中描述。
有了这些值,您可以在需要时轻松地将它们用作布尔值,也可以在需要时将它们用作实际整数。如果您正在寻找更简单的严格布尔值结果,请参阅 Piglet 的回答;它更好地描述了这种意图。我很少遇到这样的需求,因此我建议使用nil
/value 替代方案。这是 Lua 中常用的方法。
您可以简单地搜索任何非数字的内容。
local function isInteger(str)
return not (str == "" or str:find("%D")) -- str:match("%D") also works
end
Run Code Online (Sandbox Code Playgroud)