比较vb中的字符串

16 vb.net string compare

希望这应该是一个简单的问题.在java中我认为它是compareTo().

如何比较2个字符串变量以确定它们是否相同?

即:

If (string1 = string2 And string3 = string4) Then
    'perform operation
Else
    'perform another operation
End If
Run Code Online (Sandbox Code Playgroud)

Fre*_*örk 20

我建议使用String.Compare方法.使用该方法,您还可以控制是否让它执行区分大小写的比较.

样品:

Dim str1 As String = "String one"
Dim str2 As String = str1
Dim str3 As String = "String three"
Dim str4 As String = str3

If String.Compare(str1, str2) = 0 And String.Compare(str3, str4) = 0 Then
    MessageBox.Show("str1 = str2 And str3 = str4")
Else
    MessageBox.Show("Else")
End If
Run Code Online (Sandbox Code Playgroud)

编辑:如果要执行不区分大小写的搜索,可以使用StringComparison参数:

If String.Compare(str1, str2, StringComparison.InvariantCultureIgnoreCase) = 0 And String.Compare(str3, str4, StringComparison.InvariantCultureIgnoreCase) = 0 Then
Run Code Online (Sandbox Code Playgroud)

  • 这个答案不必要地复杂化.如果情况重要,只需执行"str1 = str2".要忽略大小写,请执行"String.Equals(str1,str2,StringComparison.InvariantCultureIgnoreCase)".或者适合您的任务的StringComparison变体.不需要使用`Compare`,它会使代码与`= 0`混乱.并要求读者更多地考虑代码的意图."等于"使意图显而易见.只有当我需要使用`Compare`时,才需要除了'0`以外的值(排序). (8认同)
  • 没有什么有趣或令人困惑的.`String.Compare(str1,str2)`不返回`Boolean`."0"并不意味着"错误",而"1"并不意味着"真实".`String.Compare`返回一个`Integer`:如果`str1`按字母顺序排在'str2`之前小于零,如果`str2`按字母顺序排在'str1`之前大于零,如果字符串相同则返回0.`String.Compare`的返回值永远不应该转换为`Boolean`.如果你想要一个`Boolean`,使用`String.Equals`返回一个`Boolean`. (3认同)
  • 有趣的是,“String.Compare(str1, str2)”当它们相等时转换为“False”,当它们不相等时转换为“True”。 (2认同)

Rob*_*vey 11

Dim MyString As String = "Hello World"
Dim YourString As String = "Hello World"
Console.WriteLine(String.Equals(MyString, YourString))
Run Code Online (Sandbox Code Playgroud)

返回一个bool True.此比较区分大小写.

所以在你的例子中,

if String.Equals(string1, string2) and String.Equals(string3, string4) then
  ' do something
else
  ' do something else
end if
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考,它工作正常-我一直都在使用它。尽管在vb.net和更高版本中,通常会使用“ AndAlso”而不是“ And”,仅在必要时才进行第二次比较(“短路评估”)。 (2认同)

Tim*_*Tim 11

在vb.net中,您可以实际比较字符串=.即使String是引用类型,在vb.net =String也已重新定义,以对两个字符串的内容进行区分大小写的比较.

您可以使用以下代码对此进行测试.请注意,我从用户输入中获取了一个值,以确保编译器不能对两个变量使用相同的引用,如果从同一个字符串Literal定义变量,Java编译器将使用相同的引用.运行程序,键入"This"并按<Enter>键.

Sub Main()
    Dim a As String = New String("This")
    Dim b As String

    b = Console.ReadLine()

    If a = b Then
        Console.WriteLine("They are equal")
    Else
        Console.WriteLine("Not equal")
    End If
    Console.ReadLine()
End Sub
Run Code Online (Sandbox Code Playgroud)