首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较Strings - ASCII空间

比较Strings - ASCII空间
EN

Stack Overflow用户
提问于 2012-08-18 18:39:01
回答 1查看 1.8K关注 0票数 3

这样做有什么区别:

代码语言:javascript
复制
Dim strTest As String
If strTest > " " Then

End If

这是:

代码语言:javascript
复制
Dim strTest As String
If strTest <> "" Then

End If

我认为代码示例1是比较ASCII值(空格的ASCII代码是32)。我已经查看了MSDN上的String部分,但是我找不到答案。

更新

我也对这里发生的事情感到困惑:

代码语言:javascript
复制
 Dim strTest As String = "Test"
  If strTest > " " Then

  End If
EN

回答 1

Stack Overflow用户

发布于 2012-08-18 19:06:52

> (大于)运算符将按字母顺序或字符代码值顺序进行测试(取决于Option Compare设置),而<> (不相等)运算符则测试是否相等。只要这两个字符串是完全不同的,那么<>将始终计算为True。只要操作符右侧的字符串按字母顺序或字符代码值在第一个字符串之后出现,>就会计算为true。因此:

代码语言:javascript
复制
Option Compare Text  ' Compare strings alphabetically

...

Dim x As String = "Hello"
Dim y As String = "World"

If x <> y Then
    ' This block is executed because the strings are different
Else
    ' This block is skipped
End If

If x > y Then
    ' This block is skipped
Else
    ' This block is executed because "Hello" is less than "World" alphabetically
End If

但是,在您的问题中,您将空字符串与空字符串进行比较(设置为Nothing)。在这种情况下,比较运算符将空变量视为空字符串。因此,Nothing <> ""应该计算为False,因为操作符的两边都被认为是空字符串。空字符串或空字符串应始终被视为排序顺序的第一位,因此Nothing > "Hello"应该计算为False,因为空字符串优先于其他所有内容。但是,Nothing > ""应该计算为False,因为它们都是相等的,因此它们既不是在另一个之前也不是在后面。

为了回答你的最后一个问题,"Test" > " "将测试字母T是在空格之前还是后面。如果Option Compare设置为Text,它将按字母顺序对它们进行比较,并且应该返回True (这最终取决于您的地区的字母排序)。如果Option Compare设置为Binary,它将根据它们的字符代码值对它们进行比较。如果它们是ASCII字符串,空格字符的值比字母(如T )低,所以它也应该返回True

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12021261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档