Comparer des chaînes dans .NET

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

Nom de la méthode Utilisation
String.Compare Compare les valeurs de deux chaînes. Retourne une valeur entière.
String.CompareOrdinal Compare deux chaînes sans tenir compte de la culture locale. Retourne une valeur entière.
String.CompareTo Compare l'objet chaîne actif à une autre chaîne. Retourne une valeur entière.
String.StartsWith Détermine si une chaîne commence par la chaîne 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 existe 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, en commençant par le 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, en commençant par 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 de comparer deux chaînes de façon approfondie. Cette méthode prend en compte la culture. Vous pouvez utiliser cette fonction pour comparer deux chaînes ou les sous-chaînes de deux chaînes. En outre, des surcharges sont fournies, qui prennent ou non en compte les différences de casse et de culture. Le tableau suivant montre les trois valeurs entières que cette méthode peut retourner.

Valeur de retour Condition
Entier négatif La première chaîne précède la seconde chaîne dans l'ordre de tri.

-ou-

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

-ou-

Les deux chaînes sont null.
Entier positif

-ou-

1
La première chaîne suit la seconde chaîne dans l'ordre de tri.

-ou-

La seconde chaîne est null.

Important

La méthode String.Compare est principalement destinée à être utilisée lors du classement ou du tri de chaînes. Vous ne devez pas utiliser la méthode String.Compare pour tester l'égalité (c'est-à-dire rechercher explicitement une valeur de retour égale à 0 sans savoir si une chaîne est inférieure ou supérieure à l'autre). Pour déterminer si deux chaînes sont égales, utilisez à la place la méthode String.Equals(String, String, StringComparison) .

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

String^ string1 = "Hello World!";
Console::WriteLine(String::Compare(string1, "Hello World?"));
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 sur la console.

L'exemple précédent tient compte par défaut de la culture. Pour effectuer une comparaison de chaînes indépendantes de la culture, utilisez une surcharge de la méthode String.Compare qui vous permet de spécifier la culture à utiliser en fournissant un paramètre culture. Pour avoir un exemple qui montre comment utiliser la méthode String.Compare pour effectuer une comparaison indépendante de la culture, consultez Comparaisons de chaînes indépendantes de la culture.

Méthode CompareOrdinal

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

Important

La méthode String.CompareOrdinal est principalement destinée à être utilisée lors du classement ou du tri de chaînes. Vous ne devez pas utiliser la méthode String.CompareOrdinal pour tester l'égalité (c'est-à-dire rechercher explicitement une valeur de retour égale à 0 sans savoir si une chaîne est inférieure ou supérieure à l'autre). Pour déterminer si deux chaînes sont égales, utilisez à la place la méthode String.Equals(String, String, StringComparison) .

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

String^ string1 = "Hello World!";
Console::WriteLine(String::CompareOrdinal(string1, "hello world!"));
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 sur la console.

Méthode CompareTo

La méthode String.CompareTo compare la chaîne encapsulée par l'objet chaîne actif à une autre chaîne ou un autre objet. Les valeurs de retour de cette méthode sont identiques aux valeurs retournées par la méthode String.Compare du tableau précédent.

Important

La méthode String.CompareTo est principalement destinée à être utilisée lors du classement ou du tri de chaînes. Vous ne devez pas utiliser la méthode String.CompareTo pour tester l'égalité (c'est-à-dire rechercher explicitement une valeur de retour égale à 0 sans savoir si une chaîne est inférieure ou supérieure à l'autre). Pour déterminer si deux chaînes sont égales, utilisez à la place la méthode String.Equals(String, String, StringComparison) .

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

String^ string1 = "Hello World";
String^ string2 = "Hello World!";
int MyInt = string1->CompareTo(string2);
Console::WriteLine( MyInt );
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 sur la console.

Toutes les surcharges de la méthode String.CompareTo effectuent par défaut des comparaisons dépendantes de la culture et qui respectent la casse. Aucune surcharge de cette méthode n'est fournie pour vous permettre d'effectuer une comparaison indépendante de la culture. Pour la clarté du code, nous vous recommandons d’utiliser à la place la méthode String.Compare, en spécifiant CultureInfo.CurrentCulture pour les opérations dépendantes de la culture ou CultureInfo.InvariantCulture pour les opérations indépendantes de la culture. Pour des exemples montrant comment utiliser la méthode String.Compare pour effectuer des comparaisons dépendantes et indépendantes de la culture, consultez Effectuer des comparaisons de chaînes indépendantes de la culture.

Méthode Equals

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

String^ string1 = "Hello World";
Console::WriteLine(string1->Equals("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 sur la console.

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

String^ string1 = "Hello World";
String^ string2 = "Hello World";
Console::WriteLine(String::Equals(string1, string2));
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 sur la console.

Méthodes StartsWith et EndsWith

Utilisez la méthode String.StartsWith pour déterminer si un objet chaîne commence par les mêmes caractères que ceux qui constituent une autre chaîne. Cette méthode qui respecte la casse retourne true si l’objet String actif 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 chaîne commence par "Hello".

String^ string1 = "Hello World";
Console::WriteLine(string1->StartsWith("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 sur la console.

La méthode String.EndsWith effectue une comparaison entre une chaîne passée et les caractères qui se trouvent à la fin de l’objet chaîne actuel. Elle retourne également une valeur booléenne. L’exemple suivant vérifie la fin d’une chaîne à l’aide de la méthode EndsWith.

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

Cet exemple affiche False sur la console.

Méthodes IndexOf et LastIndexOf

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

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

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

Cet exemple affiche 2 sur la console.

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

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

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

Cet exemple affiche 9 sur la console.

Les deux méthodes sont utiles quand elles sont utilisées conjointement avec la méthode String.Remove. Vous pouvez utiliser 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 pour supprimer un caractère ou un mot commençant par ce caractère.

Voir aussi