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
- Bonnes pratiques pour l’utilisation de chaînes dans .NET
- Opérations de chaînes de base
- Effectuer des opérations de chaînes indépendantes de la culture
- Sorting Weight Tables : utilisé par .NET Framework et .NET Core 1.0-3.1 sur Windows
- Default Unicode Collation Element Table : utilisé par .NET 5 sur toutes les plateformes, et par .NET Core sur Linux et macOS