Comparaison de chaînes

Mise à jour : novembre 2007

Le .NET Framework fournit plusieurs méthodes de comparaison des valeurs de chaînes. Le tableau suivant énumère et décrit les méthodes de comparaison des valeurs.

Nom de la méthode

Use

String.Compare

Compare les valeurs de deux chaînes. Retourne une valeur entière.

String.CompareOrdinal

Compare deux chaînes sans considération de la culture locale. Retourne une valeur entière.

String.CompareTo

Compare l'objet chaîne en cours à 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 Boolean.

String.EndsWith

Détermine si une chaîne se termine par la chaîne passée. Retourne une valeur Boolean.

String.Equals

Détermine si deux chaînes sont identiques. Retourne une valeur Boolean.

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.

Compare

La méthode String.Compare fournit une possibilité de comparer directement l'objet chaîne en cours à une autre chaîne ou à un autre objet. Cette méthode est sensible à l'environnement culturel. Vous pouvez utiliser cette fonction pour comparer deux chaînes ou sous-chaînes de deux chaînes. En outre, des surcharges qui tiennent compte ou non de la casse et des variations de culture sont également fournies. Le tableau suivant énumère les trois valeurs entières qui peuvent être retournées par cette méthode.

Type valeur

Condition

Entier négatif

strA est inférieur à strB.

0

strA est égal à strB.

Entier positif

- ou -

1

Cette instance est supérieure à value.

- ou -

value est une référence null (Nothing en Visual Basic).

Remarque importante :

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

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

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

Cet exemple affiche -1 dans la console.

L'exemple précédent est dépendant de la culture par défaut. Pour effectuer une comparaison de chaînes indépendante 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 obtenir un exemple de code qui montre comment utiliser la méthode String.Compare pour effectuer une comparaison indépendante de la culture, consultez Exécution de comparaisons de chaînes indépendantes de la culture.

CompareOrdinal

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

Remarque importante :

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

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

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

Cet exemple affiche -32 dans la console.

CompareTo

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

Remarque importante :

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

L'exemple suivant utilise la méthode CompareTo pour comparer l'objet MyString à l'objet OtherString.

Dim MyString As String = "Hello World"
Dim OtherString As String = "Hello World!"
Dim MyInt As Integer = MyString.CompareTo(OtherString)
Console.WriteLine(MyInt)
String MyString = "Hello World";
String OtherString = "Hello World!";
int MyInt = MyString.CompareTo(OtherString);    
Console.WriteLine( MyInt );

Cet exemple affiche 1 dans 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 des surcharges fournies par cette méthode ne vous permet d'effectuer une comparaison indépendante de la culture. Pour des raisons de clarté du code, il est conseillé d'utiliser la méthode String.Compare en spécifiant CultureInfo.CurrentCulture pour des opérations dépendantes de la culture ou CultureInfo.InvariantCulture pour des opérations indépendantes de la culture. Pour obtenir des exemples qui montrent comment utiliser la méthode String.Compare pour effectuer à la fois des comparaisons dépendantes et indépendantes de la culture, consultez Exécution de comparaisons de chaînes indépendantes de la culture.

Equals

La méthode String.Equals peut aisément déterminer si deux chaînes sont identiques. Cette méthode qui respecte la casse retourne une valeur Boolean true ou false. Elle peut être utilisée à partir de la classe existante, comme illustré dans l'exemple suivant. Cet exemple de code suivant utilise la méthode Equals pour déterminer si un objet chaîne contient la phrase « Hello World ».

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

Cet exemple affiche True dans la console.

Cette méthode peut aussi être utilisée comme une méthode statique. L'exemple suivant compare deux objets chaîne en utilisant une méthode statique.

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

Cet exemple affiche True dans la console.

StartsWith et EndsWith

Vous pouvez utiliser la méthode String.StartsWith pour déterminer si un objet chaîne commence par les mêmes caractères qui entourent une autre chaîne. Cette méthode qui respecte la casse retourne true si l'objet chaîne en cours commence par la chaîne passée et false dans le cas contraire. L'exemple suivant utilise cette méthode pour déterminer si un objet chaîne commence par "Hello".

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

Cet exemple affiche True dans la console.

La méthode String.EndsWith compare une chaîne passée aux caractères existant à la fin de l'objet chaîne en cours. Elle retourne également une valeur Boolean. L'exemple suivant teste la fin d'une chaîne à l'aide de la méthode EndsWith.

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

Cet exemple affiche False dans la console.

IndexOf et LastIndexOf

Vous pouvez utiliser 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.

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

Cet exemple affiche 2 dans la console.

La méthode String.LastIndexOf est similaire à la méthode String.IndexOf à l'exception du fait 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.

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

Cet exemple affiche 9 dans la console.

Les deux méthodes sont utiles lorsqu'elles sont associées à la méthode String.Remove. Vous pouvez utiliser les méthodes IndexOf ou LastIndexOf pour récupérer la position d'un caractère et fournir ensuite cette position à la méthode Remove afin de supprimer un caractère ou un mot commençant par ce caractère.

Voir aussi

Autres ressources

Opérations de chaînes de base

Exécution d'opérations de chaînes indépendantes de la culture