Partager via


Comparer des chaînes dans .NET

.NET fournit plusieurs méthodes pour comparer les valeurs des chaînes. Le tableau suivant répertorie et décrit les méthodes de comparaison de valeurs.

Nom de la méthode Utiliser
String.Compare Compare les valeurs de deux chaînes. Retourne une valeur entière.
String.CompareOrdinal Compare deux chaînes de caractères sans tenir compte de la culture locale. Retourne une valeur entière.
String.CompareTo Compare l’objet de chaîne actuel à une autre chaîne. Retourne une valeur entière.
String.StartsWith Déterminer si une chaîne de caractères commence par la chaîne de caractères passée. Retourne une valeur booléenne.
String.EndsWith Détermine si une chaîne se termine par la chaîne passée. Retourne une valeur booléenne.
String.Contains Détermine si un caractère ou une chaîne se produit dans une autre chaîne. Retourne une valeur booléenne.
String.Equals Détermine si deux chaînes sont identiques. Retourne une valeur booléenne.
String.IndexOf Retourne la position d’index d’un caractère ou d’une chaîne, à partir du début de la chaîne que vous examinez. Retourne une valeur entière.
String.LastIndexOf Retourne la position d’index d’un caractère ou d’une chaîne, à partir de la fin de la chaîne que vous examinez. Retourne une valeur entière.

méthode Compare

La méthode statique String.Compare fournit un moyen approfondi de comparer deux chaînes. Cette méthode est sensible à la culture. Vous pouvez utiliser cette fonction pour comparer deux chaînes ou sous-chaînes de deux chaînes. En outre, les surcharges sont fournies en ce qui concerne ou ignorent les cas et les écarts culturels. Le tableau suivant montre les trois valeurs entières que cette méthode peut retourner.

Valeur retournée État
Entier négatif La première chaîne précède la deuxième chaîne dans l’ordre de tri.

- ou -

La première chaîne est null.
0 La première chaîne et la deuxième chaîne sont égales.

- ou -

Les deux chaînes sont null.
Entier positif

- ou -

1
La première chaîne suit la deuxième chaîne dans l’ordre de tri.

- ou -

La deuxième chaîne est null.

Importante

La String.Compare méthode est principalement destinée à être utilisée lors de l’ordre ou du tri des chaînes. Vous ne devez pas utiliser la méthode pour tester l’égalité String.Compare (autrement dit, pour rechercher explicitement une valeur de retour de 0 sans tenir compte si une chaîne est inférieure ou supérieure à l’autre). Au lieu de cela, pour déterminer si deux chaînes sont égales, utilisez la String.Equals(String, String, StringComparison) méthode.

L’exemple suivant utilise la String.Compare méthode pour déterminer les valeurs relatives de deux chaînes.

string string1 = "Hello World!";
Console.WriteLine(String.Compare(string1, "Hello World?"));
Dim string1 As String = "Hello World!"
Console.WriteLine(String.Compare(string1, "Hello World?"))

Cet exemple affiche -1 dans la console.

L’exemple précédent est sensible aux différences culturelles par défaut. Pour effectuer une comparaison de chaînes non sensibles à la culture, utilisez une surcharge de la méthode String.Compare qui permet de spécifier la culture à utiliser en passant un paramètre culture. Pour obtenir un exemple qui montre comment utiliser la méthode pour effectuer une comparaison sans respect de la String.Compare culture, consultez comparaisons de chaînes non sensibles à la culture.

méthode CompareOrdinal

La String.CompareOrdinal méthode compare deux objets de chaîne sans tenir compte de la culture locale. Les valeurs de retour de cette méthode sont identiques aux valeurs retournées par la Compare méthode dans le tableau précédent.

Importante

La String.CompareOrdinal méthode est principalement destinée à être utilisée lors de l’ordre ou du tri des chaînes. Vous ne devez pas utiliser la méthode pour tester l’égalité String.CompareOrdinal (autrement dit, pour rechercher explicitement une valeur de retour de 0 sans tenir compte si une chaîne est inférieure ou supérieure à l’autre). Au lieu de cela, pour déterminer si deux chaînes sont égales, utilisez la String.Equals(String, String, StringComparison) méthode.

L’exemple suivant utilise la CompareOrdinal méthode pour comparer les valeurs de deux chaînes.

string string1 = "Hello World!";
Console.WriteLine(String.CompareOrdinal(string1, "hello world!"));
Dim string1 As String = "Hello World!"
Console.WriteLine(String.CompareOrdinal(string1, "hello world!"))

Cet exemple affiche -32 dans la console.

méthode CompareTo

La String.CompareTo méthode compare la chaîne que l’objet de chaîne actuel encapsule à une autre chaîne ou objet. Les valeurs de retour de cette méthode sont identiques aux valeurs retournées par la String.Compare méthode dans le tableau précédent.

Importante

La String.CompareTo méthode est principalement destinée à être utilisée lors de l’ordre ou du tri des chaînes. Vous ne devez pas utiliser la méthode pour tester l’égalité String.CompareTo (autrement dit, pour rechercher explicitement une valeur de retour de 0 sans tenir compte si une chaîne est inférieure ou supérieure à l’autre). Au lieu de cela, pour déterminer si deux chaînes sont égales, utilisez la String.Equals(String, String, StringComparison) méthode.

L’exemple suivant utilise la String.CompareTo méthode pour comparer l’objet string1 à l’objet string2 .

string string1 = "Hello World";
string string2 = "Hello World!";
int MyInt = string1.CompareTo(string2);
Console.WriteLine( MyInt );
Dim string1 As String = "Hello World"
Dim string2 As String = "Hello World!"
Dim MyInt As Integer = string1.CompareTo(string2)
Console.WriteLine(MyInt)

Cet exemple affiche -1 dans la console.

Toutes les surcharges de la String.CompareTo méthode effectuent des comparaisons respectant la culture et respectant la casse par défaut. Aucune surcharge de cette méthode n’est fournie, ce qui vous permet d’effectuer une comparaison sans respect de la culture. Pour plus de clarté du code, nous vous recommandons d'utiliser la méthode String.Compare à la place, en spécifiant CultureInfo.CurrentCulture pour les opérations sensibles à la culture ou CultureInfo.InvariantCulture pour les opérations non sensibles à la culture. Pour des exemples illustrant comment utiliser la méthode String.Compare pour effectuer des comparaisons sensibles et insensibles à la culture, consultez Comparaisons de chaînes Culture-Insensitive.

méthode Equals

La String.Equals méthode peut facilement déterminer si deux chaînes sont identiques. Cette méthode sensible à la casse retourne une valeur booléenne true ou false. Il peut être utilisé à partir d’une classe existante, comme illustré dans l’exemple suivant. L’exemple suivant utilise la Equals méthode pour déterminer si un objet de chaîne contient l’expression « Hello World ».

string string1 = "Hello World";
Console.WriteLine(string1.Equals("Hello World"));
Dim string1 As String = "Hello World"
Console.WriteLine(string1.Equals("Hello World"))

Cet exemple affiche True dans la console.

Cette méthode peut également être utilisée comme méthode statique. L’exemple suivant compare deux objets de chaîne à l’aide d’une méthode statique.

string string1 = "Hello World";
string string2 = "Hello World";
Console.WriteLine(String.Equals(string1, string2));
Dim string1 As String = "Hello World"
Dim string2 As String = "Hello World"
Console.WriteLine(String.Equals(string1, string2))

Cet exemple affiche True dans la console.

Méthodes StartsWith et EndsWith

Vous pouvez utiliser la String.StartsWith méthode pour déterminer si un objet de chaîne commence par les mêmes caractères qu’une autre chaîne. Cette méthode sensible à la casse retourne true si l’objet de chaîne actuel commence par la chaîne passée et false si ce n’est pas le cas. L’exemple suivant utilise cette méthode pour déterminer si un objet de chaîne commence par « Hello ».

string string1 = "Hello World";
Console.WriteLine(string1.StartsWith("Hello"));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.StartsWith("Hello"))

Cet exemple affiche True dans la console.

La String.EndsWith méthode compare une chaîne passée aux caractères qui existent à la fin de l’objet string actuel. Elle retourne également une valeur booléenne. L’exemple suivant vérifie la fin d’une chaîne à l’aide de la EndsWith méthode.

string string1 = "Hello World";
Console.WriteLine(string1.EndsWith("Hello"));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.EndsWith("Hello"))

Cet exemple affiche False dans la console.

Méthodes IndexOf et LastIndexOf

Vous pouvez utiliser la String.IndexOf méthode pour déterminer la position de la première occurrence d’un caractère particulier dans une chaîne. Cette méthode sensible à la casse commence à compter du début d’une chaîne et retourne la position du caractère passé en utilisant un index à base zéro. Si le caractère est introuvable, une valeur de –1 est retournée.

L’exemple suivant utilise la IndexOf méthode pour rechercher la première occurrence du caractère «l » dans une chaîne.

string string1 = "Hello World";
Console.WriteLine(string1.IndexOf('l'));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.IndexOf("l"))

Cet exemple affiche 2 dans la console.

La String.LastIndexOf méthode est similaire à la String.IndexOf méthode, sauf qu’elle retourne la position de la dernière occurrence d’un caractère particulier dans une chaîne. Il respecte la casse et utilise un index de base zéro.

L’exemple suivant utilise la LastIndexOf méthode pour rechercher la dernière occurrence du caractère «l » dans une chaîne.

string string1 = "Hello World";
Console.WriteLine(string1.LastIndexOf('l'));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.LastIndexOf("l"))

Cet exemple affiche 9 dans la console.

Les deux méthodes sont utiles lorsqu’elles sont utilisées conjointement avec la String.Remove méthode. Vous pouvez utiliser soit la méthode IndexOf ou la méthode LastIndexOf pour récupérer la position d'un caractère, puis fournir cette position à la méthode Remove afin de supprimer un caractère ou un mot qui commence par ce caractère.

Voir aussi