下面4种字符串相等比较方式应该使用哪个最合理呢
每个它的优点和错点是什么?
Dim a As String = "m"
Dim b As String = "y"
If a = b Then
End If
If a Like b Then
End If
If a Is b Then
End If
If a.Contains(b) Then
End If
------解决方案--------------------
建议使用第一第四
Contains是内部函数
=运算符,一般地是调用Contains
like是指A为B的部份
Is运算符 应该是判断是否为同一对象。即地址是否相同,不相同时再判断值是否相同。
------解决方案--------------------
最好用a.Equals(b)
------解决方案--------------------
a = b
这是你四种方法中唯一的相等比较,这个操作符调用 String.Equals(a, b)。
a Like b
这是模式匹配
Dim a As String = "m"
Dim b As String = "[a-z]"
Console.WriteLine("""{0}"" Like ""{1}"" = {2}", a, b, a Like b)
"m" Like "[a-z]" = True
a Is b
这是对象比较,下面例子中 a、b 编译时用了同一个常量字符串所以相等,而 a、c 字符串内容相同也不等。
Dim a As String = "m"
Dim b As String = "m"
Dim c As String = "md".Substring(0, 1)
Console.WriteLine("""{0}"" is ""{1}"" = {2}", a, b, a Is b)
Console.WriteLine("""{0}"" is ""{1}"" = {2}", a, c, a Is c)
"m" is "m" = True
"m" is "m" = False
又:String.Equals(a, b) 会先调用 Is 判断,不同对象并且都不是 Nothing 再进行内容比较,1楼搞错了。
a.Contains(b)
这是包含
Dim a As String = "mb"
Dim b As String = "m"
Console.WriteLine("""{0}"".Contains(""{1}"") = {2}", a, b, a.Contains(b))
"mb".Contains("m") = True