web-dev-qa-db-fra.com

comparaison de chaînes en vb

J'espère que cela devrait être une question facile. En Java je pense que c'est compareTo().

Comment comparer 2 variables de chaîne pour déterminer si elles sont identiques?

c'est à dire:

If (string1 = string2 And string3 = string4) Then
    'perform operation
Else
    'perform another operation
End If
16
aspguy

Je suggère d'utiliser la méthode String.Compare . En utilisant cette méthode, vous pouvez également contrôler si elle doit effectuer ou non des comparaisons sensibles à la casse.

Échantillon:

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

Modifier: si vous souhaitez effectuer une recherche insensible à la casse, vous pouvez utiliser le paramètre StringComparison :

If String.Compare(str1, str2, StringComparison.InvariantCultureIgnoreCase) = 0 And String.Compare(str3, str4, StringComparison.InvariantCultureIgnoreCase) = 0 Then
20
Fredrik Mörk

Dans vb.net, vous pouvez réellement comparer les chaînes avec =. Même si String est un type de référence, dans vb.net = on String a été redéfini pour faire une comparaison sensible à la casse de contents des deux chaînes.

Vous pouvez tester cela avec le code suivant. Notez que j'ai pris l'une des valeurs de l'entrée utilisateur pour m'assurer que le compilateur ne peut pas utiliser la même référence pour les deux variables comme le Java le ferait si les variables étaient définies à partir de la même chaîne Literal. Exécutez le programme, tapez "This" et appuyez sur <Entrée>.

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
11
Tim
Dim MyString As String = "Hello World"
Dim YourString As String = "Hello World"
Console.WriteLine(String.Equals(MyString, YourString))

renvoie un bool True. Cette comparaison est sensible à la casse.

Donc, dans votre exemple,

if String.Equals(string1, string2) and String.Equals(string3, string4) then
  ' do something
else
  ' do something else
end if
11
Robert Harvey