Comparaison et tri des données pour une culture spécifique
Mise à jour : novembre 2007
L'ordre alphabétique et les conventions de classement d'éléments varient d'une culture à l'autre. Par exemple, l'ordre de tri peut respecter la casse ou ne pas la respecter. Il peut être basé sur la phonétique ou sur l'apparence du caractère. Dans les langues d'Asie orientale, les éléments sont classés en fonction du trait et de la clé des idéogrammes. Les tris peuvent aussi varier en fonction de l'ordre fondamental utilisé par la langue ou la culture pour l'alphabet. Par exemple, la langue suédoise emploie un caractère « Æ » qu'elle place après « Z » dans l'alphabet. La langue allemande connaît, elle aussi, ce caractère, mais le trie comme « ae », après « A » dans l'alphabet. Une application mondialisable doit être capable de comparer et trier des données selon la culture afin de prendre en charge des conventions de tri spécifiques à une culture et à une langue.
Remarque Dans certains scénarios, un comportement dépendant de la culture n'est pas souhaitable. Pour plus d'informations sur quand et comment effectuer des opérations indépendantes de la culture, consultez Opérations de chaînes indépendantes de la culture.
Comparaison de chaînes
La classe CompareInfo fournit un ensemble de méthodes que vous pouvez utiliser pour effectuer des comparaisons de chaînes dépendantes de la culture. La classe CultureInfo a une propriété CompareInfo qui est une instance de cette classe. Cette propriété définit comment comparer et trier les chaînes pour une culture spécifique. La méthode Compare() utilise les informations de la propriété CompareInfo pour comparer des chaînes. La méthode String.Compare retourne un entier négatif si chaîne1 est inférieure à chaîne2, zéro si chaîne1 et chaîne2 sont égales et un entier positif si chaîne1 est supérieure à chaîne2.
L'exemple de code suivant montre comment la méthode String.Compare peut évaluer deux chaînes différemment selon la culture utilisée pour effectuer la comparaison. D'abord, CurrentCulture a la valeur Danois (Danemark) et les chaînes « Apple » et « Æble » sont comparées. La langue danoise traite le caractère « Æ » comme une lettre individuelle et la trie après « Z » dans l'alphabet. Par conséquent, la chaîne "Æble" est supérieure à "Apple" pour la culture danoise. Ensuite, CurrentCulture a la valeur Anglais (États-Unis) et lex chaînes « Apple » et « Æble » sont comparées. Cette fois, la chaîne "Æble" est évaluée comme inférieure à "Apple". En effet, la langue anglaise traite le caractère « Æ » comme un symbole spécial, qu'elle trie avant la lettre « A » dans l'alphabet.
Imports System
Imports System.Globalization
Imports System.Threading
Imports Microsoft.VisualBasic
Public Class TestClass
Public Shared Sub Main()
Dim str1 As String = "Apple"
Dim str2 As String = "Æble"
' Sets the CurrentCulture to Danish in Denmark.
Thread.CurrentThread.CurrentCulture = New CultureInfo("da-DK")
Dim result1 As Integer = [String].Compare(str1, str2)
Console.WriteLine(ControlChars.Newline + "When the CurrentCulture _
is ""da-DK""," + ControlChars.Newline + " the result of _
comparing_{0} with {1} is: {2}", str1, str2, result1)
' Sets the CurrentCulture to English in the U.S.
Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US")
Dim result2 As Integer = [String].Compare(str1, str2)
Console.WriteLine(ControlChars.Newline + "When the _
CurrentCulture is""en-US""," + ControlChars.Newline + " _
the result of comparing {0} with {1} is: {2}", str1, _
str2,result2)
End Sub
End Class
using System;
using System.Globalization;
using System.Threading;
public class CompareStringSample
{
public static void Main()
{
string str1 = "Apple";
string str2 = "Æble";
// Sets the CurrentCulture to Danish in Denmark.
Thread.CurrentThread.CurrentCulture = new CultureInfo("da-DK");
// Compares the two strings.
int result1 = String.Compare(str1, str2);
Console.WriteLine("\nWhen the CurrentCulture is \"da-DK\",\nthe
result of comparing {0} with {1} is: {2}",str1, str2,
result1);
// Sets the CurrentCulture to English in the U.S.
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
// Compares the two strings.
int result2 = String.Compare(str1, str2);
Console.WriteLine("\nWhen the CurrentCulture is \"en-US\",\nthe
result of comparing {0} with {1} is: {2}",str1, str2,
result2);
}
}
Si vous exécutez ce code, la sortie présente l'aspect suivant :
When the CurrentCulture is "da-DK",
the result of comparing Apple with Æble is: -1
When the CurrentCulture is "en-US",
the result of comparing Apple with Æble is: 1
Pour plus d'informations sur les comparaisons de chaînes, consultez Comparaison de chaînes.
Utilisation d'ordres de tri secondaires
Certaines cultures prennent en charge plusieurs ordres de tri. Par exemple, la culture "zh-CN" (chinois en Chine) prend en charge un tri selon la prononciation (par défaut) et un tri en fonction du nombre de traits. Lorsque votre application crée un objet CultureInfo en utilisant un nom de culture, par exemple "zh-CN", l'ordre de tri par défaut est utilisé. Pour spécifier l'ordre de tri secondaire, l'application doit créer un objet CultureInfo en utilisant l'identificateur LCID pour l'ordre de tri secondaire. L'application doit ensuite obtenir un objet CompareInfo de CompareInfo à utiliser dans les comparaisons de chaînes. Votre application peut créer directement un objet CompareInfo à l'aide de GetCompareInfo(), en spécifiant l'identificateur de paramètres régionaux (LCID) pour l'ordre de tri secondaire.
Le tableau suivant énumère les cultures qui prennent en charge des ordres de tri secondaires et précise les identificateurs LCID pour les ordres de tri par défaut et secondaire.
Nom de la culture |
Culture |
Nom et LCID de l'ordre de tri par défaut |
Nom et LCID de l'ordre de tri secondaire |
---|---|---|---|
es-ES |
Espagnol (Espagne) |
International : 0x00000C0A |
Traditionnel : 0x0000040A |
zh-TW |
Chinois (Taïwan) |
Nombre de traits : 0x00000404 |
Bopomofo : 0x00030404 |
zh-CN |
Chinois (Chine) |
Prononciation : 0x00000804 |
Nombre de traits : 0x00020804 |
zh-HK |
Chinois (Hong Kong, Région administrative spéciale de) |
Nombre de traits : 0x00000c04 |
Nombre de traits : 0x00020c04 |
zh-SG |
Chinois (Singapour) |
Prononciation : 0x00001004 |
Nombre de traits : 0x00021004 |
zh-MO |
Chinois (Région administrative spéciale de Macao) |
Prononciation : 0x00001404 |
Nombre de traits : 0x00021404 |
ja-JP |
Japonais (Japon) |
Par défaut : 0x00000411 |
Unicode : 0x00010411 |
ko-KR |
Coréen (Corée) |
Par défaut : 0x00000412 |
Coréen Xwansung - Unicode : 0x00010412 |
de-DE |
Allemand (Allemagne) |
Dictionnaire : 0x00000407 |
Annuaire téléphonique (DIN) : 0x00010407 |
hu-HU |
Hongrois (Hongrie) |
Par défaut : 0x0000040e |
Tri technique : 0x0001040e |
ka-GE |
Géorgien (Géorgie) |
Traditionnel : 0x00000437 |
Tri moderne : 0x00010437 |
Recherche de caractères dans les chaînes
Votre application peut utiliser la méthode surchargée IndexOf() pour extraire l'index de base zéro d'un caractère ou d'une sous-chaîne à l'intérieur d'une chaîne spécifiée. Cette méthode extrait un entier négatif si le caractère ou la sous-chaîne est introuvable dans la chaîne spécifiée. En recherchant un caractère spécifié à l'aide de CompareInfo.IndexOf, l'application doit tenir compte du fait que les surcharges de méthode qui acceptent un paramètre CompareOptions n'effectuent pas la comparaison de la même manière que celles qui n'en acceptent pas. Les surcharges de méthode qui recherchent un type de caractère et n'acceptent pas de paramètre CompareOptions exécutent une recherche dépendante de la culture. Lorsqu’une valeur Unicode représente un caractère précomposé, tel que la ligature « Æ » (\u00C6), elle peut être considérée comme équivalant à toute occurrence de ses composants dans le bon ordre, par exemple « AE » (\u0041\u0045), selon la culture. Pour exécuter une recherche ordinale (indépendante de la culture) d'un caractère dont le type est considéré équivalent à un autre type de caractère uniquement si les valeurs Unicode sont les mêmes, l'application doit utiliser l'une des surcharges CompareInfo.IndexOf qui prennent un paramètre CompareOptions et lui ont donné la valeur Ordinal.
Vos applications peuvent également utiliser des surcharges de la méthode IndexOf() qui recherche un caractère pour exécuter une recherche ordinale (indépendante de la culture). Notez que les surcharges de cette méthode qui recherchent une chaîne effectuent une recherche dépendante de la culture.
L'exemple de code suivant illustre la différence entre les résultats retournés par la méthode IndexOf selon la culture. Un objet CultureInfo est créé pour danois (Danemark), désigné par « da-DK ». Ensuite, il utilise des surcharges de la méthode CompareInfo.IndexOf pour rechercher le caractère « Æ » dans les chaînes « Æble » et « aeble ». Notez que pour la culture « da-DK », la méthode CompareInfo.IndexOf qui admet un paramètre CompareOptions ayant la valeur Ordinal et la même méthode qui n'en admet pas retournent le même résultat. Le caractère « Æ » est uniquement considéré comme équivalant à la valeur de code Unicode \u00E6.
Imports System
Imports System.Globalization
Imports System.Threading
Imports Microsoft.VisualBasic
Public Class CompareClass
Public Shared Sub Main()
Dim str1 As String = "Æble"
Dim str2 As String = "aeble"
Dim find As Char = "Æ"
' Creates a CultureInfo for Danish in Denmark.
Dim ci As New CultureInfo("da-DK")
Dim result1 As Integer = ci.CompareInfo.IndexOf(str1, find)
Dim result2 As Integer = ci.CompareInfo.IndexOf(str2, find)
Dim result3 As Integer = ci.CompareInfo.IndexOf(str1, find, _
CompareOptions.Ordinal)
Dim result4 As Integer = ci.CompareInfo.IndexOf(str2, find, _
CompareOptions.Ordinal)
Console.WriteLine(ControlChars.Newline + "CultureInfo is set to _
{0}", ci.DisplayName)
Console.WriteLine(ControlChars.Newline + "Using _
CompareInfo.IndexOf(string, char) method" + _
ControlChars.Newline + " the result of searching for {0} in the _
string {1} is: {2}", find, str1, result1)
Console.WriteLine(ControlChars.Newline + "Using _
CompareInfo.IndexOf(string, char) method" + _
ControlChars.Newline + " the result of searching for {0} in the _
string {1} is: {2}", find, str2, result2)
Console.WriteLine(ControlChars.Newline + "Using _
CompareInfo.IndexOf(string, char, CompareOptions) method" + _
ControlChars.Newline + " the result of searching for {0} in the _
string {1} is: {2}", find, str1, result3)
Console.WriteLine(ControlChars.Newline + "Using _
CompareInfo.IndexOf(string, char, CompareOptions) method" + _
ControlChars.Newline + " the result of searching for {0} in the _
string {1} is: {2}", find, str2, result4)
End Sub
End Class
using System;
using System.Globalization;
using System.Threading;
public class CompareClass
{
public static void Main()
{
string str1 = "Æble";
string str2 = "aeble";
char find = 'Æ';
// Creates a CultureInfo for Danish in Denmark.
CultureInfo ci= new CultureInfo("da-DK");
int result1 = ci.CompareInfo.IndexOf(str1, find);
int result2 = ci.CompareInfo.IndexOf(str2, find);
int result3 = ci.CompareInfo.IndexOf(str1, find,
CompareOptions.Ordinal);
int result4 = ci.CompareInfo.IndexOf(str2, find,
CompareOptions.Ordinal);
Console.WriteLine("\nCultureInfo is set to {0} ", ci.DisplayName);
Console.WriteLine("\nUsing CompareInfo.IndexOf(string, char)
method\nthe result of searching for {0} in the string {1} is:
{2}", find, str1, result1);
Console.WriteLine("\nUsing CompareInfo.IndexOf(string, char)
method\nthe result of searching for {0} in the string {1} is:
{2}", find, str2, result2);
Console.WriteLine("\nUsing CompareInfo.IndexOf(string, char,
CompareOptions) method\nthe result of searching for {0} in the
string {1} is: {2}", find, str1, result3);
Console.WriteLine("\nUsing CompareInfo.IndexOf(string, char,
CompareOptions) method\nthe result of searching for {0} in the
string {1} is: {2}", find, str2, result4);
}
}
Ce code génère la sortie suivante :
CultureInfo is set to Danish (Denmark)
Using CompareInfo.IndexOf(string, char) method
the result of searching for Æ in the string Æble is: 0
Using CompareInfo.IndexOf(string, char) method
the result of searching for Æ in the string aeble is: -1
Using CompareInfo.IndexOf(string, char, CompareOptions) method
the result of searching for Æ in the string Æble is: 0
Using CompareInfo.IndexOf(string, char, CompareOptions) method
the result of searching for Æ in the string aeble is: -1
Si votre application remplace CultureInfo ci = new CultureInfo ("da-DK") par CultureInfo ci = new CultureInfo ("en-US"), la méthode IndexOf() avec le paramètre CompareOptions défini à Ordinal et la même méthode sans ce paramètre retournent des résultats différents. La comparaison dépendante de la culture effectuée par la méthode IndexOf évalue le caractère « Æ » comme équivalent à ses composants « ae ». La comparaison ordinale (indépendante de la culture) effectuée par la méthode IndexOf ne retourne pas le caractère « Æ » comme équivalent à « ae » parce que leurs valeurs de code Unicode ne sont pas identiques.
Lorsque vous recompilez et exécutez ce code pour l'Anglais (États-Unis), culture « en-US », vous obtenez la sortie suivante :
The CurrentCulture property is set to English (United States)
Using CompareInfo.IndexOf(string, char) method
the result of searching for Æ in the string Æble is: 0
Using CompareInfo.IndexOf(string, char) method
the result of searching for Æ in the string aeble is: 0
Using CompareInfo.IndexOf(string, char, CompareOptions) method
the result of searching for Æ in the string Æble is: 0
Using CompareInfo.IndexOf(string, char, CompareOptions) method
the result of searching for Æ in the string aeble is: -1
Tri de chaînes
La classe Array fournit une méthode surchargée Sort() qui permet à votre application de trier des tableaux selon la propriété CurrentCulture. L'exemple suivant crée un tableau de trois chaînes. En premier lieu, la propriété CurrentCulture a la valeur Anglais (États-Unis), « en-US », et la méthode Sort() est appelée. L'ordre de tri résultant est basé sur les conventions de tri pour la culture Anglais (États-Unis). Ensuite, la propriété CurrentCulture est définie comme « da-DK » et la méthode Array.Sort est appelée une nouvelle fois. Remarquez comment l'utilisation des conventions de tri pour la culture "da-DK" aboutit à un ordre de tri différent du précédent.
Imports System
Imports System.Threading
Imports System.IO
Imports System.Globalization
Imports Microsoft.VisualBasic
Public Class TextToFile
Public Shared Sub Main()
Dim str1 As [String] = "Apple"
Dim str2 As [String] = "Æble"
Dim str3 As [String] = "Zebra"
' Creates and initializes a new Array to store
' these date/time objects.
Dim stringArray As Array = Array.CreateInstance(GetType([String]), _
3)
stringArray.SetValue(str1, 0)
stringArray.SetValue(str2, 1)
stringArray.SetValue(str3, 2)
' Displays the values of the Array.
Console.WriteLine(ControlChars.Newline + "The Array initially _
contains the following strings:")
PrintIndexAndValues(stringArray)
' Sets the CurrentCulture to "en-US".
Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US")
' Sorts the values of the Array.
Array.Sort(stringArray)
' Displays the values of the Array.
Console.WriteLine(ControlChars.Newline + "After sorting for the _
culture ""en-US"":")
PrintIndexAndValues(stringArray)
' Sets the CurrentCulture to "da-DK".
Thread.CurrentThread.CurrentCulture = New CultureInfo("da-DK")
' Sort the values of the Array.
Array.Sort(stringArray)
' Displays the values of the Array.
Console.WriteLine(ControlChars.Newline + "After sorting for the _
culture ""da-DK"":")
PrintIndexAndValues(stringArray)
End Sub
Public Shared Sub PrintIndexAndValues(myArray As Array)
Dim i As Integer
For i = myArray.GetLowerBound(0) To myArray.GetUpperBound(0)
Console.WriteLine(ControlChars.Tab + "[{0}]:" + _
ControlChars.Tab + "{1}", i, myArray.GetValue(i))
Next i
End Sub
End Class
using System;
using System.Threading;
using System.Globalization;
public class ArraySort
{
public static void Main(String[] args)
{
String str1 = "Apple";
String str2 = "Æble";
String str3 = "Zebra";
// Creates and initializes a new Array to store the strings.
Array stringArray = Array.CreateInstance( typeof(String), 3 );
stringArray.SetValue(str1, 0 );
stringArray.SetValue(str2, 1 );
stringArray.SetValue(str3, 2 );
// Displays the values of the Array.
Console.WriteLine( "\nThe Array initially contains the following
strings:" );
PrintIndexAndValues(stringArray);
// Sets the CurrentCulture to "en-US".
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
// Sort the values of the Array.
Array.Sort(stringArray);
// Displays the values of the Array.
Console.WriteLine( "\nAfter sorting for the culture \"en-US\":" );
PrintIndexAndValues(stringArray);
// Sets the CurrentCulture to "da-DK".
Thread.CurrentThread.CurrentCulture = new CultureInfo("da-DK");
// Sort the values of the Array.
Array.Sort(stringArray);
// Displays the values of the Array.
Console.WriteLine( "\nAfter sorting for the culture \"da-DK\":" );
PrintIndexAndValues(stringArray);
}
public static void PrintIndexAndValues(Array myArray)
{
for ( int i = myArray.GetLowerBound(0); i <=
myArray.GetUpperBound(0); i++ )
Console.WriteLine( "\t[{0}]:\t{1}", i, myArray.GetValue( i ) );
}
}
Ce code génère la sortie suivante :
The Array initially contains the following strings:
[0]: Apple
[1]: Æble
[2]: Zebra
After sorting for the culture "en-US":
[0]: Æble
[1]: Apple
[2]: Zebra
After sorting for the culture "da-DK":
[0]: Apple
[1]: Zebra
[2]: Æble
Utilisation de clés de tri
Les clés de tri s'utilisent pour prendre en charge des tris tenant compte des cultures. Selon la norme Unicode, chaque caractère d'une chaîne se voit attribuer différentes pondérations de tri, notamment les pondérations alphabétique, diacritique et de casse. Une clé de tri sert de référentiel de ces pondérations pour une chaîne particulière. Par exemple, une clé de tri peut contenir une chaîne de pondération alphabétique, suivie d'une chaîne de pondération de casse, etc. Pour plus d'informations sur les concepts de clés de tri, consultez la norme Unicode à l'adresse http://www.unicode.org.
Dans .NET Framework, la classe SortKey mappe les chaînes sur leurs clés de tri et inversement. Vos applications peuvent utiliser la méthode GetSortKey() pour créer une clé de tri pour une chaîne que vous spécifiez. La clé de tri résultante pour une chaîne spécifiée est une suite d'octets qui peuvent varier selon la culture CurrentCulture et la valeur CompareOptions que vous spécifiez. Par exemple, si l'application spécifie la valeur IgnoreCase en créant une clé de tri, une opération de comparaison de chaînes utilisant la clé de tri ignore la casse.
Après avoir créé une clé de tri pour une chaîne, l'application peut la passer comme paramètre aux méthodes fournies par la classe SortKey. La méthode Compare autorise la comparaison de clés de tri. Parce que cette méthode effectue une simple comparaison octet par octet, elle est bien plus rapide que Compare(). Les applications à forte intensité de tri pourront améliorer les performances en générant et stockant des clés de tri pour toutes les chaînes utilisées. Lorsqu'une opération de tri ou de comparaison est requise, l'application peut utiliser les clés de tri au lieu des chaînes.
L'exemple de code suivant crée des clés de tri pour deux chaînes lorsque la culture CurrentCulture est définie comme « da-DK ». Il compare les deux chaînes à l'aide de la méthode SortKey.Compare et affiche les résultats. La méthode retourne un entier négatif si chaîne1 est inférieure à chaîne2, zéro (0) si chaîne1 et chaîne2 sont égales et un entier positif si chaîne1 est supérieure à chaîne2. Ensuite, l'exemple définit « en-US » comme propriété CurrentCulture et crée des clés de tri pour les deux chaînes. Les clés de tri pour les chaînes sont comparées et les résultats sont affichés. Remarquez que les résultats du tri diffèrent selon la culture CurrentCulture. Bien que les résultats de l'exemple de code suivant soient identiques à ceux de la comparaison de ces chaînes dans l'exemple Comparaison de chaînes, plus haut dans cette rubrique, la méthode SortKey.Compare est plus rapide que la méthode String.Compare.
Imports System
Imports System.Threading
Imports System.Globalization
Imports Microsoft.VisualBasic
Public Class SortKeySample
Public Shared Sub Main()
Dim str1 As [String] = "Apple"
Dim str2 As [String] = "Æble"
' Sets the CurrentCulture to "da-DK".
Dim dk As New CultureInfo("da-DK")
Thread.CurrentThread.CurrentCulture = dk
' Creates a culturally sensitive sort key for str1.
Dim sc1 As SortKey = dk.CompareInfo.GetSortKey(str1)
' Create a culturally sensitive sort key for str2.
Dim sc2 As SortKey = dk.CompareInfo.GetSortKey(str2)
' Compares the two sort keys and display the results.
Dim result1 As Integer = SortKey.Compare(sc1, sc2)
Console.WriteLine(ControlChars.Newline + "When the CurrentCulture _
is ""da-DK""," + ControlChars.Newline + " the result of _
comparing {0} with {1} is: {2}", str1, str2, result1)
' Sets the CurrentCulture to "en-US".
Dim enus As New CultureInfo("en-US")
Thread.CurrentThread.CurrentCulture = enus
' Creates a culturally sensitive sort key for str1.
Dim sc3 As SortKey = enus.CompareInfo.GetSortKey(str1)
' Create a culturally sensitive sort key for str1.
Dim sc4 As SortKey = enus.CompareInfo.GetSortKey(str2)
' Compares the two sort keys and display the results.
Dim result2 As Integer = SortKey.Compare(sc3, sc4)
Console.WriteLine(ControlChars.Newline + "When the CurrentCulture _
is ""en-US""," + ControlChars.Newline + " the result of _
comparing {0} with {1} is: {2}", str1, str2, result2)
End Sub
End Class
using System;
using System.Threading;
using System.Globalization;
public class SortKeySample
{
public static void Main(String[] args)
{
String str1 = "Apple";
String str2 = "Æble";
// Sets the CurrentCulture to "da-DK".
CultureInfo dk = new CultureInfo("da-DK");
Thread.CurrentThread.CurrentCulture = dk;
// Creates a culturally sensitive sort key for str1.
SortKey sc1 = dk.CompareInfo.GetSortKey(str1);
// Create a culturally sensitive sort key for str2.
SortKey sc2 = dk.CompareInfo.GetSortKey(str2);
// Compares the two sort keys and display the results.
int result1 = SortKey.Compare(sc1, sc2);
Console.WriteLine("\nWhen the CurrentCulture is \"da-DK\",\nthe
result of comparing {0} with {1} is: {2}", str1, str2,
result1);
// Sets the CurrentCulture to "en-US".
CultureInfo enus = new CultureInfo("en-US");
Thread.CurrentThread.CurrentCulture = enus ;
// Creates a culturally sensitive sort key for str1.
SortKey sc3 = enus.CompareInfo.GetSortKey(str1);
// Create a culturally sensitive sort key for str1.
SortKey sc4 = enus.CompareInfo.GetSortKey(str2);
// Compares the two sort keys and display the results.
int result2 = SortKey.Compare(sc3, sc4);
Console.WriteLine("\nWhen the CurrentCulture is \"en-US\",\nthe
result of comparing {0} with {1} is: {2}", str1, str2,
result2);
}
}
Ce code génère la sortie suivante :
When the CurrentCulture is "da-DK",
the result of comparing Apple with Æble is: -1
When the CurrentCulture is "en-US",
the result of comparing Apple with Æble is: 1
Normalisation
Votre application normaliser des chaînes en majuscules ou en minuscules avant le tri. Les règles de tri des chaînes et de choix de la casse sont spécifiques à la langue. Par exemple, même dans les langues latines, il y a des règles de composition et de tri différentes. Il n'y a que quelques langues (dont l'anglais) qui utilisent un ordre de tri correspondant à l'ordre des points de code (par exemple, A [65] précède B [66]).
Vos applications ne doivent pas compter sur les points de code pour effectuer un tri et des comparaisons de chaînes précis. De plus, le .NET Framework n'applique ni ne garantit aucune forme spécifique de normalisation. C'est à vous qu'il incombe d'effectuer la normalisation appropriée dans les applications que vous développez.
Pour plus d'informations sur la normalisation de chaînes, consultez Normalisation et tri.
Voir aussi
Concepts
Opérations de chaînes indépendantes de la culture