在Lua中,我如何确定一个字符串是否是整数?例如:isInteger("123")
应该返回true。而isIntger("abc")
和isIntger("12.3")
则应该返回false。
在Lua中,我如何确定一个字符串是否是整数?例如:isInteger("123")
应该返回true。而isIntger("abc")
和isIntger("12.3")
则应该返回false。
从Lua 5.2开始,您可以使用tonumber
来完成此操作。如果您在其中放入第二个参数,则该字符串将被视为应该是base
中的整数的数字:
print(tonumber("145.5", 10)) -- nil
print(tonumber("145", 10)) -- 145
print(tonumber("-145", 10)) -- -145
tonumber
即使指定了base
也接受任何数字,而不仅仅是整数。我可能会使用string.match
:print(("145.5"):match("^%-?%d+$")) -- nil
print(("145"):match("^%-?%d+$")) -- "145"
print(("-145"):match("^%-?%d+$")) -- "-145"
模式在第5.4.1节中有描述。
拥有这些值后,您可以在需要时轻松将它们用作布尔值,也可以在需要时将它们用作实际整数。如果您正在寻找更简单的严格布尔值结果,请参考Piglet的答案;它更好地描述了这种意图。我很少遇到这种需要,因此建议使用nil
/值替代方案。这是Lua中常用的方法。
local function isInteger(str)
return not (str == "" or str:find("%D")) -- str:match("%D") also works
end