如何检查Lua中的值是否为空?

时间:2012-04-26 06:21:58

标签: lua conditional

在Lua中对条件进行检查是否为空的正确方法是什么? if x == ""f x ~= ""似乎不起作用。

3 个答案:

答案 0 :(得分:16)

Lua是一种基于动态类型的语言 任何变量都可以包含以下类型之一: nil 布尔数字字符串功能线程 userdata
表中的任何变量(包括_G,全局所在的表)没有值,在索引时会给出nil的值。当您将表变量设置为nil时,它基本上“取消声明”它(完全从内存中删除条目)。
声明local变量时,如果未立即赋值,则赋值为nil。与表变量不同,当您将local变量设置为nil时,它“取消声明”它(它的值只有nil)。< / p>

在Lua中,空字符串("")仍然是一个“值” - 它只是一个大小为零的字符串。

答案 1 :(得分:3)

我最近也碰到过这个问题。如果数据库值为“空白”(非空),则LuaSQL返回空字符串。一个hacky方法,但这是我如何解决它:

if (string.len(x) >= 1) then
    ...
end

答案 2 :(得分:1)

您的字符串中可能包含空格,换行符或其他不可见字符。所以你认为它是“空的”,但事实并非如此。这通常发生在您从用户那里获取输入时,必须输入“enter”才能完成 - “enter”最终会出现在字符串中。

您需要的是一个函数,它告诉您字符串是否为“空白” - 空或空格/制表符/换行符列表。这是一种方法:

function isBlank(x)
  return not not tostring(x):find("^%s*$")
end

用法:

if isBlank(x) then
  -- ...
end