软件教程

isNull、isEmpty和空字符串的区别

来源: 本站    类别: 软件教程    日期: 2016/2/2

 

ASP中我们经常会用到两个参数就是isNull和isEmpty,在我们判断某个字符串为空的时候使用。比如某个字符串是str1,经常我们用if isNull(str1) or isEmpty(str1) then来判断,或者使用if str1=\"\" then来判断字符串是否为空。

有时候我们非常纠结,isNull、isEmpty和""空字符串到底有什么区别呢?

isNull()

Null 值指出变量不包含有效数据。Null 与 Empty 不同,后者指出变量未经初始化。Null 与零长度字符串 ("") 也不同,零长度字符串往往指的是空串。

重点 使用 IsNull 函数可以判断表达式是否包含 Null 值。在某些情况下想使表达式取值为 True,例如 IfVar=Null 和 IfVar<>Null,但它们通常总是为 False。这是因为任何包含 Null 的表达式本身就为 Null,所以表达式的结果为 False。

实例 1

 代码如下
dim x
document.write(IsNull(x) & "<br />")x=10
document.write(IsNull(x) & "<br />")x=Empty
document.write(IsNull(x) & "<br />")x=Null
document.write(IsNull(x))
输出:
False
False
False
True


下面的示例利用 IsNull 函数决定变量是否包含 Null:

 代码如下

Dim MyVar, MyCheck
MyCheck = IsNull(MyVar)      ' 返回 False
MyVar = Null                 ' 赋为 Null
MyCheck = IsNull(MyVar)      ' 返回 True
MyVar = Empty                ' 赋为 Empty
MyCheck = IsNull(MyVar)      ' 返回 False

isEmpty()

如果变量未初始化或显式地设置为 Empty,则函数 IsEmpty 返回 True;否则函数返回 False。如果 exPRession 包含一个以上的变量,总返回 False。

下面的示例利用 IsEmpty 函数决定变量是否能被初始化:

 代码如下

Dim MyVar, MyCheck
MyCheck = IsEmpty(MyVar)      ' 返回 True。
MyVar = Null                  ' 赋为 Null。
MyCheck = IsEmpty(MyVar)      ' 返回 False。
MyVar = Empty                 ' 赋为 Empty。
MyCheck = IsEmpty(MyVar)      ' 返回 True。

3。零长度字符串 ("") 
零长度字符串往往指的是空串。
str="",将空字符串赋给str变量,已经赋值了,且赋的是字符

三者的区别就是: 
isnull是一种类型测试,测试是否为空值(null)类型。 
isEmpty是一种值测试,测试是否是空值。但这个不同语言中采用的方法不同。 
=""是串测试,测试值是否为空值。

说一个isEmpty吧,在有些语言中isEmpty是一种空值测试,它可以测试以下内容:

 代码如下

dim str as string 
isEmpty(str)=True

str = "" 
isEmpty(str)=True

str = null 
isEmpty(str)=True

dim str as integer 
str = 0 
isEmpty(str) = True

也就是部分语言中把数据中的0,字符中的空串,NULL值都作为空值的测试范畴。

但在C#等语言中的要求比较严格,VB中要求也不是很严格的。这里只要了解一个特殊的类型null类型,它的类当然也是null。同时有些语言上还有一种未定义型: 
undefined类型,如在C#中: 
string str ; 
则string只有这一个的定义,所以它的值还没有真正被定义,此时它就是undefined类型的。这种类型常存在于C族语言和类C族如ECMAScript族(javascript等)及Java中!

补充:在数据库设计中可以规定某字段为null,这样如果不再给他赋值时,此记录即为null,但是在表格输出时,null记录将破坏表格的结构,即表格中的格线将消失,很多人在可能出现这种情况时,会在数据库中设默认值或在处理时给此记录赋一个空串。


相关文章


Copyright © 2004 - 2024 CNHWW Inc. All Rights Reserved
石家庄市征红网络科技有限公司版权所有 邮政编码:050051
服务电话:0311-85315152 13931185013 在线客服QQ:81447932 / 81447933 邮箱: cnhww@163.com