我正在使用3rd party库从机器变量中获取数据。数据返回的是字符串类型,因此在请求数据后,我确认它不是像这样的空字符串:
Not String.IsNullOrWhiteSpace(data)
但是,我的程序失败了,我意识到,当机器中的变量为空时,上面的函数将返回True。
通过调试,我注意到当变量为空时,第3方库中的函数返回vbNullChar
,而当我希望其评估为{{时,则返回String.IsNullOrWhiteSpace(vbNullChar)
1}}就像False
一样。
那么我唯一的检查方法如下吗?
True
答案 0 :(得分:5)
因为您要在此处比较的两件事是不同“空”事物。
String.IsNullOrWhiteSpace
在以下情况下返回true
:
null
null
字符串中的每个字符都被归为空白字符(如果字符串的长度为0,则“每个字符”为true)在这种情况下,您尝试传递都不为Constants.vbNullChar
的字符串,它是由1个字符组成的字符串,\0
字符,未归类为空白。
Constants.vbNullString
是null
引用,String.IsNullOrWhiteSpace
处理得很好。
关于如何处理此具体问题,我将在获得结果后立即从vbNullChar
替换为null
(vbNullString
),这样就不得不只检查了一个地方。
此外,如果您返回一个字符串,它是否以该\0
字符结尾?如果是这样,那么您可能也希望将其删除。