Comparaison et tri des données pour une culture spécifique
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.
Notes
Il existe des scénarios dans lesquels 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 possède une propriété CultureInfo.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 String.Compare utilise les informations de la propriété CultureInfo.CompareInfo pour comparer les 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, l'exemple définit le danois au Danemark comme CurrentCulture et compare les chaînes "Apple" et "Æble". 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, l'exemple définit l'anglais aux États-Unis comme CurrentCulture et compare de nouveau les chaînes "Apple" et "Æble". 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 String, classe et 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 vous créez 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, créez un objet CultureInfo en utilisant l'identificateur LCID pour l'ordre de tri secondaire. Puis, obtenez un objet CompareInfo (à utiliser dans les comparaisons de chaînes) de CultureInfo.CompareInfo. Alternativement, vous pouvez créer directement un objet CompareInfo en utilisant la méthode CompareInfo.GetCompareInfo (Int32), en spécifiant le LCID pour l'ordre de tri alternatif.
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 | Langue-pays/région | 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 - Macao (Région administrative spéciale de) |
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
Vous pouvez utiliser la méthode surchargée CompareInfo.IndexOf pour retourner 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 retourne 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, ne perdez pas de vue 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 CompareInfo.IndexOf qui recherchent une valeur char (Char en Visual Basic) et ne prennent pas de paramètre de type CompareOptions effectuent une recherche dépendante de la culture. Cela signifie que si la valeur char est une valeur Unicode représentant 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 effectuer une recherche ordinale (indépendante de la culture), dans laquelle un objet de type char n'est considéré comme équivalant à un autre objet char que si leurs valeurs Unicode sont identiques, utilisez l'une des surcharges de la méthode CompareInfo.IndexOf qui admet un paramètre CompareOptions. Affectez au paramètre CompareOptions la valeur CompareOptions.Ordinal.
Pour effectuer une recherche ordinale, vous pouvez aussi utiliser des surcharges de la méthode String.IndexOf qui recherchent une valeur char. Notez que les surcharges de la méthode String.IndexOf 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 CompareInfo.IndexOf(string, char) selon la culture. Cet exemple crée CultureInfo pour "da-DK" (danois au Danemark). 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.Ordinal, et la méthode CompareInfo.Index, 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 vous remplacez CultureInfo ci = new CultureInfo ("da-DK");
par CultureInfo ci = new CultureInfo ("en-US")
, la méthode CompareInfo.Index employée avec le paramètre CompareOptions.Ordinal et la méthode CompareInfo.Index employée sans le paramètre CompareOptions.Ordinal retournent des résultats différents. La comparaison dépendante de la culture effectuée par CompareInfo.IndexOf(string, char) évalue le caractère "Æ" comme équivalant à ses composants "ae". La comparaison ordinale (indépendante de la culture) effectuée par la méthode CompareInfo.IndexOf(string, char, CompareOptions.Ordinal) ne retourne pas le caractère "Æ" comme équivalant à "ae" parce que leurs valeurs de code Unicode ne sont pas identiques.
Lorsque vous recompilez et exécutez ce code pour la 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 Array.Sort qui vous permet de trier des tableaux en fonction de la propriété CultureInfo.CurrentCulture. L'exemple suivant crée un tableau de trois chaînes. D'abord, cet exemple définit "en-US" comme CurrentCulture et appelle la méthode Array.Sort. L'ordre de tri résultant est basé sur les conventions de tri pour la culture "en-US". Ensuite, CurrentCulture est définie comme "da-DK" et la méthode Array.Sort est appelée à nouveau. 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 le .NET Framework, la classe SortKey mappe les chaînes sur leurs clés de tri et vice versa. Vous pouvez utiliser la méthode CompareInfo.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 le paramètre CompareOptions que vous spécifiez. Par exemple, si vous spécifiez IgnoreCase lorsque vous créez une clé de tri, une opération de comparaison de chaînes utilisant la clé de tri ne tiendra pas compte de la casse.
Après avoir créé une clé de tri pour une chaîne, vous pouvez la passer comme paramètre aux méthodes fournies par la classe SortKey. La méthode SortKey.Compare vous permet de comparer des clés de tri. Dans la mesure où SortKey.Compare exécute une simple comparaison octet par octet, cette opération est beaucoup plus rapide qu'à l'aide de String.Compare. Dans les applications à forte intensité de tri, vous pouvez améliorer les performances en générant et stockant des clés de tri pour toutes les chaînes que l'application utilise. Lorsqu'une opération de tri ou de comparaison est requise, vous pouvez 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 SortKey.Compare 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 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
Vous pouvez 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]).
Vous ne devez 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.
Voir aussi
Référence
CompareInfo Class
SortKey Class
Concepts
Opérations de chaînes indépendantes de la culture