如何判断一个字符串在lua中是否为整数?例如isInteger("123"),应该是真的。isIntger("abc")和isIntger("12.3")应该为false。
发布于 2020-06-29 16:25:05
从Lua5.2开始,你可以使用tonumber来实现这一点。如果将第二个参数放入其中,则该字符串将被视为一个数字,在base中应为整数
print(tonumber("145.5", 10)) -- nil
print(tonumber("145", 10)) -- 145
print(tonumber("-145", 10)) -- -145在Lua5.1中,这种情况是不同的,因为即使指定了base,tonumber也可以接受任何数字,而不仅仅是整数。我可能会使用string.match
print(("145.5"):match("^%-?%d+$")) -- nil
print(("145"):match("^%-?%d+$")) -- "145"
print(("-145"):match("^%-?%d+$")) -- "-145"模式在5.4.1一节中进行了描述。
有了这些值,您就可以在需要时轻松地将它们用作布尔值,也可以在需要时将它们用作实际的整数。如果您正在寻找更简单的仅限严格布尔值的结果,请参阅Piglet的答案;它更好地描述了这种意图。我很少遇到这样的需求,因此我建议使用nil/value替代方案。这是Lua中常用的方法。
发布于 2020-06-29 16:25:04
您可以简单地搜索任何不是数字的内容。
local function isInteger(str)
return not (str == "" or str:find("%D")) -- str:match("%D") also works
endhttps://stackoverflow.com/questions/62633698
复制相似问题